[英]JFrame-JDialog comunication
我有一个JFrame主窗口,其中有一个Register按钮。单击register按钮,将弹出JDialog窗口。
public void mouseClicked(MouseEvent e) {
Reg new1=new Reg(users);
new1.setVisible(true);
}
JDialog窗口有2个按钮-> Register,Cancel。这两个按钮都必须执行某些操作并关闭Dialog窗口。
这就是我尝试过的。 在Reg(对话视窗)---> btnCancel中:
public void mouseClicked(MouseEvent e) {
dialog.dispose();
System.out.println("Reg disposed by cancel button");
}
这仅在运行D窗口时关闭D窗口,但是我想从主窗口执行(单击按钮)时,它仍然像主框架“类”中的对象一样存在并且不会关闭。我该怎么办?怎么办我把它关闭吗?
您需要框架的某种方式来确定对话框的关闭方式
// Why are you using a `MouseListener` on buttons??
// User use keyboards to, use an ActionListener instead
public void mouseClicked(MouseEvent e) {
Reg new1=new Reg(users);
new1.setVisible(true);
switch (new1.getDisposeState()) {
case Reg.OK:
// Clicked Ok
break;
case Reg.CANCEL:
// Clicked cancel or was closed by press [x]
break;
}
}
然后在您的Reg
类中,您需要维护有关状态的信息...
public class Reg extends JDialog {
public static final int OK = 0;
public static final int CANCEL = 1;
private int disposeState = CANCEL;
//...
public int getDisposeState() {
return disposeState
}
public void setDisposeState(int state) {
disposeState = state;
}
然后你改变状态
// Why are you using a `MouseListener` on buttons??
// User use keyboards to, use an ActionListener instead
public void mouseClicked(MouseEvent e) {
setDisposeState(CANCEL);
dialog.dispose();
System.out.println("Reg disposed by cancel button");
}
所有这些都假定您的对话当然是模态的...
现在,就我个人而言,我将使您的Reg
类成为JPanel
并将其添加到JOptionPane
或使用CardLayout
看一眼:
...更多细节
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.