私は単純なJavaSwingプロジェクトに取り組んでいます。これはメインクラスのコードです(名前が変更されました):
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に固有のものですか、それともウィンドウを表示する前にイベントハンドラを設定するために何かを変更する必要がありますか?