我有一个窗口,它是我的应用程序中的主窗口,它包含按钮。单击其中一个时,会出现一个小孩JFrame
,如果我再次单击,则会显示另一个框架,这可以是连续的,具体取决于点击次数。我想要的是,当我点击JButton
一次只打开一帧时,由于此框架打开,第二次单击按钮时不能打开其他类似的框架,直到第一个子框架关闭。
答案 0 :(得分:2)
这可以通过打开模态对话框而不是jFrame
来完成。有关详细信息,请参阅How to Use Modality in Dialogs。
以下是A Simple Modal Dialog的简单示例:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class AboutDialog extends JDialog implements ActionListener {
public AboutDialog(JFrame parent, String title, String message) {
super(parent, title, true);
if (parent != null) {
Dimension parentSize = parent.getSize();
Point p = parent.getLocation();
setLocation(p.x + parentSize.width / 4, p.y + parentSize.height / 4);
}
JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane);
JPanel buttonPane = new JPanel();
JButton button = new JButton("OK");
buttonPane.add(button);
button.addActionListener(this);
getContentPane().add(buttonPane, BorderLayout.SOUTH);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
setVisible(false);
dispose();
}
public static void main(String[] a) {
AboutDialog dlg = new AboutDialog(new JFrame(), "title", "message");
}
}