setVisible(false)
JButtonの関数内でJFrameを呼び出すにはどうすればよいですかaddActionListener
(以下のように):
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//here
}
});
次のように宣言された変数があるとします。
JFrame frame;
あなたはただ電話する必要があります:
frame.setVisible(false);
それ以外の場合、拡張するクラス内にいる場合はJFrame
、次のことを行う必要があります。
NameOfClass.this.setVisible(false);
または、を使用するよりも優れてsetVisible(false)
いdispose()
ます。
ボタンのアクションが定義されている場所でフレームにアクセスできる必要があるだけです。JFrame
final を作成するか、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()
また、本当にアプリケーションを閉じようとしている場合は、おそらく使用する必要があることに注意してください。