我一直在开发Java应用程序,但是,我遇到了一些JFrames怪异的行为。这里的问题是JFrame在创建之后会持续打开。例如,我的JFrame具有以下代码:
import java.awt.GraphicsConfiguration;
import javax.swing.JButton;
import javax.swing.JFrame;
public class newFrame {
static GraphicsConfiguration gc;
static JFrame newFrame;
public static void NewFrame() {
newFrame = new JFrame(gc);
newFrame.setTitle("Reproduce Weird Reopening Behavior");
newFrame.setSize(600, 400);
newFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
newFrame.setResizable(false);
newFrame.setVisible(true);
for (int i = 0; i < 50000; i++) {
JButton b = new JButton("");
b.setBounds(100, 100, 50, 40);
newFrame.add(b);
}
}
}
这是我一直在努力的另一个类,它将创建另一个JFrame。
import java.awt.GraphicsConfiguration;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class passFrame {
static GraphicsConfiguration gc;
static JFrame originalFrame;
static JButton b;
public static void main(String[] args) {
originalFrame = new JFrame(gc);
originalFrame.setTitle("Original Frame");
originalFrame.setSize(600, 400);
originalFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
originalFrame.setResizable(false);
originalFrame.setVisible(true);
b = new JButton("Open Other JFrame");
b.setBounds(100, 100, 50, 40);
originalFrame.add(b);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newFrame.newFrame = originalFrame;
newFrame.NewFrame();
}
});
}
}
似乎在JFrame中有很多Swing组件时,从旧组件创建新JFrame会导致新JFrame在加载所有组件时多次出现。例如,这就是我的应用程序中类似的情况:
Image With Multiple JFrames Opening in Application
这里的问题是我不明白为什么这个问题似乎正在发生。