2

4つのボタンがあるJavaパネルがあります。これらのボタンをクリックすると、新しいフレームが表示され、最初のフレームは。で非表示になりsetVisibile(false)ます。その新しいウィンドウには別のボタンがありますが、それをクリックすると、最初のウィンドウの4番目のボタンに対応するイベントが表示されます。ボタンをもう一度クリックするとうまくいきますが、もちろんこれは受け入れられません。私は何かが足りないのですか?フレームを表示するだけです

nameOfTheFrame.setVisible(true);

そして私はすべてのボタンにMouseListenersを持っています。

最後のボタンのコードは単純です:

System.exit(0);

編集

サンプルコード:

    private void btn_joinGamePressed(java.awt.event.MouseEvent evt) {
            GraphicsTools.getInstance().getCreateGame().setVisible(false);
            GraphicsTools.getInstance().getMainPanel().setVisible(false);
            GraphicsTools.getInstance().getRegistration().setVisible(true);
}

GraphicsToolsはシングルトンです。

編集2いくつかのより多くの情報。MACOSでは問題なく動作することに気づきました。この問題は、LinuxとWindowsでのみ発生します。

4

2 に答える 2

1

これは、マウスリスナーが原因で発生している必要があります。新しいボタンと同じ場所にある最初のクリックで古いボタンを識別している可能性があります(これは私の推測です)。

マウスリスナーをアクションリスナーに変更します。ボタンの場合、アクションリスナーがあれば十分です。

これを試して。

于 2010-05-20T13:17:47.007 に答える
0

revalidate()フレームの実行可能性を変更するときに、フレームを呼び出してみてください。

編集:

フレームの作成に伴うものである可能性があります。フレームで「pack()」を呼び出していることを確認してください。

于 2010-05-18T14:48:31.197 に答える