import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class myFrm extends JFrame
{

JButton b1 = new JButton("Exit");
JPanel p = new JPanel();

public myFrm() {
// TODO 自动生成构造函数存根
Container con =getContentPane();
con.add(p);
p.add(b1);

b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int n = JOptionPane.showConfirmDialog(this, "are u sure?", "确认", JOptionPane.YES_NO_OPTION);
if (n==JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
}


);

}
}
public class Example1032 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
myFrm f = new myFrm();
f.setSize(60,60);
f.setVisible(true);
}}很简单的功能 单击exit按钮 出现提示 选择确认 实现退出
但是int n在哪里写呢? 请

解决方案 »

  1.   

    高手们五一都放假了啊?嘿嘿
    还是没有人搭理我哦 
    crying
      

  2.   

    showConfirmDialog的第一个参数应该是一个Component类型,你把this改称p试试看,应该就可以了
      

  3.   

    正确作法是把this改成myFrm.this。因为你这里是在匿名内部类中,这里的this已经不是指当前Frame了,而是指这个匿名内部类的实例,而这个实例是ActionListener,不是Frame。
    在一个内部类中要引用其外部类的当前实例不能用this,而要用外部类的类名加上.this这样。楼上用JPanel虽然也可以,但实际上这个参数一般是当前Frame,而不是别的Component。