为什么在调用该类的主方法时,我的JFrame会保持打开状态?

时间:2019-06-17 02:28:17

标签: java swing jframe

我一直在开发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

这里的问题是我不明白为什么这个问题似乎正在发生。

0 个答案:

没有答案