的默认关闭JDialog
操作是HIDE_ON_CLOSE
。如果您不想要多个对话框,您可以只创建一个并使其可见onSomeEvent()
。此示例使用切换按钮的itemStateChanged()
处理程序。
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
/** @see http://stackoverflow.com/questions/5528408 */
public class DialogToggle extends JPanel {
private static final String show = "Show Dialog";
private static final String hide = "Hide Dialog";
MyDialog myDialog = new MyDialog();
public DialogToggle() {
final JToggleButton b = new JToggleButton(show);
b.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (b.isSelected()) {
myDialog.setVisible(true);
b.setText(hide);
} else {
myDialog.setVisible(false);
b.setText(show);
}
}
});
this.add(b);
}
private class MyDialog extends JDialog {
public MyDialog() {
this.setLocationRelativeTo(DialogToggle.this);
this.add(new JLabel("Hello, world!", JLabel.CENTER));
}
}
private void display() {
JFrame f = new JFrame("ABC");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new DialogToggle().display();
}
});
}
}