class searchdlg extends JDialog implements ItemListener,ActionListener
{
Button btn2=new Button("取消"); public searchdlg(Frame df)
{
super(df,"查找",true); df.add(btn2);
df.setSize(300,100);
df.setVisible(true);
this.setResizable(false);
this.setModal(true);
btn2.addActionListener(this); }
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand()=="取消")searchdlg.this.dispose();
}
}
我在这个jdialog中点击“取消”却怎么也不能关闭,点击右上角的“关闭”时可以关闭。
怎样才能点取消时也能关闭呢?
{
Button btn2=new Button("取消"); public searchdlg(Frame df)
{
super(df,"查找",true); df.add(btn2);
df.setSize(300,100);
df.setVisible(true);
this.setResizable(false);
this.setModal(true);
btn2.addActionListener(this); }
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand()=="取消")searchdlg.this.dispose();
}
}
我在这个jdialog中点击“取消”却怎么也不能关闭,点击右上角的“关闭”时可以关闭。
怎样才能点取消时也能关闭呢?
第一个错,df.add(btn2);
df.setSize(300,100);
df.setVisible(true); 所有的设置都是针对“所有者”,而不是对话框。按钮都加到“所有者”中了。把df改为this。
第二个错,ae.getActionCommand()=="取消"编译没有提示吗?改为ae.getActionCommand().equals("取消")。这可以原则错误。
第三个问题,this.add(btn2);
this.setSize(300,100);
this.setVisible(true);
this.setResizable(false);
this.setModal(true);
btn2.addActionListener(this);你不觉得逻辑有问题吗?最好是这样:
btn2.addActionListener(this);
df.add(btn2);
df.setSize(300,100);
this.setResizable(false);
this.setModal(true);
df.setVisible(true);
第四个问题,把df.setVisible(true); 放在构造函数里是一个糟糕的想法,把它拿掉。如果要测试,写一个main方法:
public static void main(String[] args){
searchdlg sd=new searchdlg(new javax.swing.JFrame());
sd.setVisible(true);
}