0

setVisible(false)JButtonの関数内でJFrameを呼び出すにはどうすればよいですかaddActionListener(以下のように):

jButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent arg0) {
   //here           
  }
});
4

2 に答える 2

2

次のように宣言された変数があるとします。

JFrame frame;

あなたはただ電話する必要があります:

frame.setVisible(false);

それ以外の場合、拡張するクラス内にいる場合はJFrame、次のことを行う必要があります。

NameOfClass.this.setVisible(false);

または、を使用するよりも優れてsetVisible(false)dispose()ます。

于 2012-11-08T15:21:41.450 に答える
2

ボタンのアクションが定義されている場所でフレームにアクセスできる必要があるだけです。JFramefinal を作成するか、Actionが定義されているクラスのフィールドにすることで、これを行うことができます。

import java.awt.event.*;
import javax.swing.*;

public class CloseFrame extends JPanel{

    public CloseFrame(final JFrame frame){

        JButton button = new JButton("Hide Screen");
        button.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                //What you asked for:
                frame.setVisible(false);
                // What you should use instead of the above:
                //frame.dispose(); 
            }});

        add(button);
    }


    public static void main(String[] args){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new CloseFrame(frame));
        frame.pack();
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

編集

JFrame.dispose()また、本当にアプリケーションを閉じようとしている場合は、おそらく使用する必要があることに注意してください。

于 2012-11-08T15:27:46.883 に答える