单击时复制子JFrame

时间:2014-08-04 10:15:50

标签: java swing jframe multiple-instances

我有一个窗口,它是我的应用程序中的主窗口,它包含按钮。单击其中一个时,会出现一个小孩JFrame,如果我再次单击,则会显示另一个框架,这可以是连续的,具体取决于点击次数。我想要的是,当我点击JButton一次只打开一帧时,由于此框架打开,第二次单击按钮时不能打开其他类似的框架,直到第一个子框架关闭。

1 个答案:

答案 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");
  }
}