Sik*_*der 4 java swing jframe windowlistener jpopup
我正在做一些基本的 Java Swing application(初级水平).我要做的是当我按下 close button on JFrame窗口时,我想要一个 JOptionPane Confirm Dialog 而不是直接关闭
这是代码JFrame
JFrame frame= new JFrame("frame");
frame.setSize(300,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
Run Code Online (Sandbox Code Playgroud)
和JOptionPane代码是这样的
final JOptionPane optionPane = new JOptionPane("Are You sure?",JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud)
所以当JFrame上的关闭按钮按下这个弹出窗口应该出现而不是直接关闭
请指导我如何做到这一点..提前感谢
是的,您可以使用WindowListener来完成此操作.
public void windowClosed(WindowEvent e) {
//This will only be seen on standard output.
displayMessage("WindowListener method called: windowClosed.");
}
public void windowOpened(WindowEvent e) {
displayMessage("WindowListener method called: windowOpened.");
}
public void windowIconified(WindowEvent e) {
displayMessage("WindowListener method called: windowIconified.");
}
public void windowDeiconified(WindowEvent e) {
displayMessage("WindowListener method called: windowDeiconified.");
}
public void windowActivated(WindowEvent e) {
displayMessage("WindowListener method called: windowActivated.");
}
public void windowDeactivated(WindowEvent e) {
displayMessage("WindowListener method called: windowDeactivated.");
}
public void windowGainedFocus(WindowEvent e) {
displayMessage("WindowFocusListener method called: windowGainedFocus.");
}
public void windowLostFocus(WindowEvent e) {
displayMessage("WindowFocusListener method called: windowLostFocus.");
}
public void windowStateChanged(WindowEvent e) {
displayStateMessage(
"WindowStateListener method called: windowStateChanged.", e);
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅本教程.
但是对于你的场景,我建议你使用适配器类(因为你只需要一个事件,所以不需要累了并实现所有方法)所以这里有一个根据你的要求的例子
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class NoCloseFrame extends JFrame {
public static void main( String[] arg ) {
new NoCloseFrame();
}
public NoCloseFrame() {
super( "No Close Frame!" );
setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
setSize( 300, 300 );
setVisible( true );
addWindowListener( new AreYouSure() );
}
private class AreYouSure extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
int option = JOptionPane.showOptionDialog(
NoCloseFrame.this,
"Are you sure you want to quit?",
"Exit Dialog", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null, null,
null );
if( option == JOptionPane.YES_OPTION ) {
System.exit( 0 );
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10135 次 |
| 最近记录: |