简介
我正在学习如何显示用于用户“友好”输入的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
}
}
问题
在运行代码时,我看到弹出了两个相同的框架。我去调试它,并在调用该方法时看到它执行了两次!
为什么?
我只在主函数中用testGUI.prepareGUI();
调用了一次。
用于学习Java基本GUI的页面
答案 0 :(得分:3)
您也可以在构造函数中调用prepareGUI()
。
public TestGUI()
{
prepareGUI();
}
调用new TestGUI()
时,此构造函数将被调用,函数也会被调用。
答案 1 :(得分:1)
您两次致电prepareGui
在这里
public TestGUI()
{
prepareGUI();
}
然后在这里
TestGUI test = new TestGUI(); //constructor
test.prepareGUI(); //Call the method
因此第一个块是在新的TestGUI()调用上执行的
答案 2 :(得分:1)
您两次调用prepareGui()
方法。在构造函数中一个,在创建的对象中一次(在main
方法中)
答案 3 :(得分:1)
问题在于您已经在调用构造函数(即TestGUI())。因此,只需省略对prepareGUI()的另一个调用,即test.prepareGUI()。