gpt4 book ai didi

java - 单击时复制子 JFrame

转载 作者:行者123 更新时间:2023-12-02 05:34:42 25 4
gpt4 key购买 nike

我有一个窗口,它是我的应用程序中的主窗口,它包含按钮。单击其中一个框架时,会出现一个子 JFrame ,如果我再次单击,则会出现另一个框架,并且这可以是连续的,具体取决于单击的次数。我想要的是,当我单击 JButton 一次时,仅应打开一个框架,并且由于该框架已打开,因此第二次单击该按钮时无法打开其他类似的框架,直到第一个子级框架已关闭。

最佳答案

这可以通过打开模态对话框而不是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");
}
}

关于java - 单击时复制子 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25116423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com