java - 为什么JFrame的这个函数执行了两次?

标签 java user-interface

简介

我正在学习如何呈现 GUI 以供用户“友好”输入。下面我将引用一些网页,供有兴趣的人引用。

代码

public class TestGUI{

    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public TestGUI()
    {
        prepareGUI();
    }

    private void prepareGUI()
    {
        mainFrame = new JFrame("TestGUI"); //Header name
        mainFrame.setSize(420, 320); //Size of the frame
        mainFrame.setLayout(new GridLayout(3, 1)); //??

       mainFrame.addWindowListener(new WindowAdapter() //Waits for an user event
       {
         //When the frame is closes, the program does too.
         @Override
         public void windowClosing(WindowEvent windowEvent)
         {
            System.exit(0); //Exit program
         }        
      });

       mainFrame.setVisible(true);//GUI is visible
    }

    public static void main(String[] args) {

        TestGUI test = new TestGUI(); //constructor
        test.prepareGUI(); //Call the method
    }

}

问题

运行代码时,我看到弹出了 2 个相同的框架。我去调试了一下,发现调用方法的时候执行了两次!

这是为什么?

我只在主函数中使用 testGUI.prepareGUI(); 调用了一次。

学习 Java 基本 GUI 的网页

JavaFX

GUI Programming with AWT

最佳答案

您也可以在构造函数中调用 prepareGUI()

public TestGUI()
{
    prepareGUI();
}

当您调用new TestGUI()时,此构造函数将被调用,该函数也会被调用。

关于java - 为什么JFrame的这个函数执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035770/

相关文章:

java - 如何构建 JVM 项目来隔离专有代码?

java - 改造单值/数组

java - 给定一个二叉树,其中每个节点都有一定的权重。您必须返回二叉树中的最大权重

android - 如何通过单击按钮将 XML 页面与布局链接起来?

user-interface - MvxCommand 中间的 UI 操作

qt - 如何可视化来自谷歌 Protocol Buffer 的数据?

java split - 空间问题

java - 为什么输入类型 ="file"在浏览器上不起作用

java - 构建简单窗口时出错?

java - Box.add() 线程安全吗?