我正在做一个简单的 Java swing 项目。这是主类的代码(名称已更改):
public class MainProg
{
private static MainProg program;
//mainWin is a JFrame
private MainWindow mainWin;
//Event handler class which extends MouseAdapter
private TrayManager trayMgr;
public static void main(String[] args)
{
program = new MainProg();
}
public MainProg()
{
mainWin = new MainWindow();
trayMgr = new TrayManager();
mainWin.startBtn.addMouseListener(trayMgr);
mainWin.setVisible(true);
}
}
很明显,当程序启动时,main()
它会创建一个类的新实例MainProg
,然后调用构造函数。在构造函数中,它创建了 JFrame 的一个新实例mainWin
。然后它将事件处理程序附加到mainWin
.
在事件处理程序类trayMgr
中,唯一的方法是mouseClicked()
除了System.out.println('Clicked');
问题是,当我在 Netbeans 中运行该程序时,会立即显示 JFrame,但我似乎必须单击按钮 2-3 次才能在控制台中打印消息。
这只是 Netbeans 特有的,还是我必须更改某些内容才能在窗口可见之前设置事件处理程序?