2016-05-07 15 views
0

こんにちは!窓を閉じずに閉じる

私はこのコードを持っている:私は(ないあなたが見ることができるよう、「メイン」1に、別のウィンドウ内にある)ボタン「voltar」をクリックしたとき

private static class ClickListener implements ActionListener { 

    public ClickListener() { 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     JFrame frame = new JFrame(); 
     JLabel label = new JLabel("Opção Indisponivel"); 
     JPanel panel = new JPanel(); 
     frame.add(label, BorderLayout.CENTER); 
     frame.setSize(300, 400); 
     JButton button = new JButton("Voltar"); 
     button.addActionListener(new CloseWindowListener()); 
     panel.add(button); 
     frame.add(panel, BorderLayout.SOUTH); 
     frame.setVisible(true); 
    } 
} 

private static class CloseWindowListener implements ActionListener { 

    public CloseWindowListener() { 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     setVisible(false); 
    } 
} 

私は何をしたいですウィンドウを閉じますが、アプリケーション自体は閉じません。 setVisible行は、フレームの参照が必要なため、私が理解している静的コンテキストでは参照できないというエラーが表示されます。これをどうすれば解決できますか?

EDIT:JFrameをJDialogに変更しましたが、まだ成功していません。両方のウィンドウがシャットダウンされます。事前に

おかげで、 ディオゴ・サントス

+1

あなたのGUIには1つのメインアプリケーションウィンドウ(1つのJFrame)しかありません。他のサブウィンドウや依存ウィンドウはJFrameでなくJDialogでなければなりません。クローズするとアプリケーションを閉じることができません。 –

+0

また、[複数のJFrames、良い/悪い練習の使用?](http://stackoverflow.com/questions/9554636) –

+1

@HovercraftFullOfEelsを見てください、この質問は重複としてマークされました:http:// stackoverflow.com/questions/4268749/how-to-close-a-jframe-without-closing-the-main-programしかし、私はそれが重複しているとは思わないので、私は質問を再開した。この質問は 'setVisible行は、フレームの参照が必要なため、私が理解している静的コンテキストでは参照できないというエラーが表示されます。どうすればこの問題を解決できますか? – camickr

答えて

1

のsetVisibleラインが私にそれは私がフレームの参照を必要とするので、私は理解して静的コンテキストから参照することができないという程度の誤差を与えます。これをどうすれば解決できますか?

イベントを生成したコンポーネントにアクセスできます。次に、コンポーネントが属するウィンドウを見つけることができます。これは、任意のウィンドウを非表示にするあなたに汎用コードを与える:あなたはまた、Closing an Application

//setVisible(false); 
JButton button = (JButton)e.getSource(); 
Window window = SwingUtilities.windowForComponent(button); 
window.setVisible(false); 

をチェックアウトすることができます。 ExitActionをボタンに追加することができます。ボタンをクリックすると、ウィンドウの「x」(閉じる)ボタンをクリックするようになります。これは、ウィンドウに対して指定されたデフォルトのクローズ操作が呼び出されるかどうかを示します。

関連する問題