gpt4 book ai didi

java - 一个 JFrame 的多个实例

转载 作者:行者123 更新时间:2023-11-30 07:07:10 25 4
gpt4 key购买 nike

在 Java 中,我有 2 个类。一个包含 JFrame。在启动时,该类被调用。 JFrame 显示。

但是在另一个类中,当我在它自己的框架上按下一个按钮时,它会打开该类的一个实例,它应该创建另一个框架。但它只关注已经打开的旧框架......

来源:

FrameToOpen.java

public FrameToOpen() {
JFrame frame = new JFrame();
// Just the most simple settings to make it appear...
frame.setSize(400, 200);
frame.setVisible(true);
}

OtherClass.java

public OtherClass() {
JFrame frame = new JFrame();
JPanel window = new JPanel();
JButton openFrame = new JButton("Open Frame);
// Again, just the most simple settings to make it appear with components...
frame.setSize(400, 200);
frame.setVisible(true);
frame.add(window);
window.setLayout(null);

window.add(openFrame);
openFrame.setBounds(5, 5, 100, 30);

openFrame.addActionListener(this);

frame.repaint();
frame.validate();
}

public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (o == openFrame) {
// THIS HERE MAKES NEW INSTANCE OF FRAMETOOPEN
new FrameToOpen();
}
}

所以,当我按下这个按钮时,它不会打开一个新框架,而是只关注旧框架。

请帮忙。

“实际”类(class)

ServerGUI.java

    if (o == openAdmin) {
int port;
try {
port = Integer.parseInt(portNumber.getText().trim());
} catch(Exception er) {
appendEvent("Invalid Port Number.");
return;
}

// FrameToOpen.java. Opening a new instance of that class...
new ClientGUI("localhost", port, true);
}

ClientGUI.java

static JFrame frame = new JFrame("Chat Client");
Dimension d = new Dimension(600, 600);
JMenuBar menu = new JMenuBar();

public ClientGUI(String host, int port, boolean isHost) {

this.isHost = isHost;

frame.setSize(d);
frame.setMinimumSize(d);
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setJMenuBar(menu);
frame.setVisible(true);


// Everything else in the class is my buttons, lists, editor panes,
// and socket handling...

}

最佳答案

您将框架变量定义为static:

static JFrame frame = new JFrame("Chat Client");

因此无论创建多少个实例,它都只为类创建一次。如果您想将其作为实例字段,请移除 static 修饰符。

关于java - 一个 JFrame 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25116722/

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