Java 不允许打开同一JFrame两次或两次以上
我制作了一个Java 不允许打开同一JFrame两次或两次以上,java,swing,Java,Swing,我制作了一个JComboBox当它的一个项目被选中时,它会启动一个JFrame 但是,如果再次选择相同的项目,即使JFrame已经启动,它也会再次启动 我如何才能让它在同一时间只打开一次呢 谢谢:)我认为您需要使用自定义的JDialogs而不是Jframe,因为Jframe不允许用户从其他窗口或对话框输入内容。有关更多信息和源代码,请参阅 您还可以在一个类中使用静态Jframe变量,该类将保存由事件创建的Jframe实例,但它的编码方式不好 //global jframe variabl
JComboBox
当它的一个项目被选中时,它会启动一个JFrame
但是,如果再次选择相同的项目,即使JFrame
已经启动,它也会再次启动
我如何才能让它在同一时间只打开一次呢
谢谢:)我认为您需要使用自定义的JDialogs而不是Jframe,因为Jframe不允许用户从其他窗口或对话框输入内容。有关更多信息和源代码,请参阅 您还可以在一个类中使用静态Jframe变量,该类将保存由事件创建的Jframe实例,但它的编码方式不好
//global jframe variable
class Globals{
public static myFrame myFrameOpenedInstance=null;
}
// By invoking the event method returns same instance
method duringEventOccured()
{
if(Globals.myFrameOpenedInstance==null){
myFrame newFrameInstance=new myFrame();
Globals.myFrameOpenedInstance=newFrameInstance;
newFrameInstance.setVisible(true);
}
else{
myFrame newFrameInstance=Globals.myFrameOpenedInstance;
newFrameInstance.setVisible(true);
}
}
此演示示例对您有帮助。我们添加了Windows侦听器和布尔变量,以识别尚未打开的窗口。显示您的代码。设置标志/布尔值或检查
JFrame
是否已可见。谢谢!我添加了一个条件,如果它不可见,则允许打开它,否则将显示错误。:)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Tester extends JFrame {
boolean i = true;
public Tester() {
setVisible(true);
pack();
JComboBox box = new JComboBox();
box.addItem("One");
box.addItem("Two");
box.addItem("Three");
box.addItem("Four");
box.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (i) {
final JFrame s = new JFrame();
s.setVisible(true);
s.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
i = true;
s.setEnabled(false);
}
});
}
else {
System.out.print("\n alredy opende");
}
i = false;
}
});
getContentPane().add(box);
}
public static void main(String[] args) {
Tester tester = new Tester();
}
}