GUIを閉じると、メインクラスでメソッドが実行されますが、その後も閉じられるようにしたいと思いますか?
助けてくださいありがとう
Java Swing を使用していると仮定します。
JFrame frame = new JFrame();
frame.setTitle("Project Planner");
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent event) {
exitProcedure();
}
});
.
public void exitProcedure() {
frame.dispose();
System.exit(0);
}
dispose メソッドの前に、やりたいことを追加するだけです。
このためWindowListener
には、関連する に登録する必要がありますJFrame
。そして、windowClosing()
メソッドをオーバーライドします。
String 配列からランダムに String を選択するための編集java.util.Random API を使用できます。たとえば、ここに の配列があり、が閉じられるString
たびに、この配列からランダムに選択され、メソッドに出力されます。JFrame
String
callMeBeforeExit
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.awt.BorderLayout;
import java.util.Random;
class WorkBeforeClose extends JFrame
{
String[] strings = {
"Hello",
"World",
"Java",
"OOPs"
};
public void showGUI()
{
setTitle("Close me");
getContentPane().add(new JLabel("Close me"),BorderLayout.NORTH);
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent evt)
{
callMeBeforeExit();
System.exit(0);//Don't write this line if you don't want your program to exit
}
});
setSize(200,200);
setVisible(true);
}
private void callMeBeforeExit()
{
Random random = new Random();
int i = random.nextInt(strings.length - 1);//Defines the Range of numbers to be chosen randomly.
System.out.println(strings[i]);
}
public static void main(String st[])
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
WorkBeforeClose wbc = new WorkBeforeClose();
wbc.showGUI();
}
});
}
}
WindowAdapter
GUIのaddWindowListener()
メソッドで実装してみてください。