Java 单击即可复制子帧
我有一个窗口,它是我应用程序中的主窗口,其中包含按钮。单击其中一个时,会出现一个子Java 单击即可复制子帧,java,swing,jframe,multiple-instances,Java,Swing,Jframe,Multiple Instances,我有一个窗口,它是我应用程序中的主窗口,其中包含按钮。单击其中一个时,会出现一个子JFrame,如果我再次单击,会出现另一个帧,这可能是连续的,具体取决于单击的次数。我想要的是,当我单击JButton一次时,应该只打开一个帧,并且由于此帧是打开的,因此在第二次单击按钮时,无法打开其他类似帧,直到第一个子帧关闭 这可以通过打开一个模式对话框来完成,而不是打开一个jFrame。有关更多信息,请参阅 以下是一个简单的例子: 参见+1,但设置位置(p.x+parentSize.width/4,p.y+p
JFrame
,如果我再次单击,会出现另一个帧,这可能是连续的,具体取决于单击的次数。我想要的是,当我单击JButton
一次时,应该只打开一个帧,并且由于此帧是打开的,因此在第二次单击按钮时,无法打开其他类似帧,直到第一个子帧关闭 这可以通过打开一个模式对话框来完成,而不是打开一个jFrame
。有关更多信息,请参阅
以下是一个简单的例子:
参见+1,但
设置位置(p.x+parentSize.width/4,p.y+parentSize.height/4)
最好是setLocationRelativeTo(家长)
。感谢您的回答。使用Jframes做不到这一点??
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");
}
}