java程序中如何实现在点击关闭窗口时,跳出是否确定关闭窗口的提示框

我是java新手。java中点击关闭窗口,然后怎样才能出现提示对话框呢?点击确定才真正退出的那种。麻烦啦~

关键:
1 调用JFrame的setDefaultCloseOperation(),设置关闭模式为DO_NOTHING_ON_CLOSE(就是默认关闭效用减半,仅触发WindowListener中的windowClosing方法)
2 弹对话框,确认关闭后,添加JFrame的dispose()

代码:
package gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class MainFrame extends JFrame {

//退出按钮
JButton exitBtn;
//保留本框架实例的指针
JFrame thisFrame;

public static void main(String[] args) {

MainFrame mainFrame=new MainFrame();
mainFrame.pack();
mainFrame.setVisible(true);
}

public MainFrame(){
thisFrame=this;
initGUI();
}

private void initGUI(){
exitBtn=new JButton("退出");
exitBtn.setBounds(0, 0, 30, 20);
exitBtn.addActionListener(new exitBtnListener());
thisFrame.getContentPane().add(exitBtn);
thisFrame.addWindowListener(new windowListener());
//关键!框架将不会真正关闭
thisFrame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
}

//确认关闭
private void sureExit(){
int result=JOptionPane.showConfirmDialog(this, "你确定要退出本窗口不?", "Information", JOptionPane.YES_NO_OPTION);
if(result==JOptionPane.NO_OPTION){
return;
}
//真正执行关闭的语句
thisFrame.dispose();
}

//实现接口
class windowListener implements WindowListener{


@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub

}

@Override
public void windowClosing(WindowEvent e) {
//在关闭时调用“确认关闭”方法
sureExit();
}

@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub

}

@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub

}

@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub

}

@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub

}

@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub

}

}

//实现接口
class exitBtnListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//调用“确认关闭”方法
sureExit();
}
}
}

public class ButtonFrame extends JFrame {
public ButtonFrame() {
setSize(500, 500);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
if(JOptionPane.showConfirmDialog(null,"是否退出")==JOptionPane.OK_OPTION)
System.exit(0);
}
});
} public static void main(String[] args) {
new ButtonFrame().setVisible(true);
}
}

public class Test extends JFrame{
public Test(){
setBounds(200,100,200,300);
setTitle("测试");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
JOptionPane.showMessageDialog(null, "是否关闭?");
}
});
}

public static void main(String []args){
new Test().setVisible(true);
}
}

希望会对你又帮助!

if(JOptionPane.showConfirmDialog(null, "Will you close?")==0){
System.exit();
}

null那里对应的是你那个组件,或者null都可以。
如果返回为0,表示用户选择了yes,否则为no

应该要再在监听中new一个Frame,再在里面加一个监听,相当于监听套监听

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
这句一定要有,不然点什么都会关闭窗口
然后用addWindowListener()就可以了

我弄明白了,是这样的:需要先设置默认关闭方式为不关闭,之后再重写关闭事件。

需要这么几句话:

1.设置默认关闭方式为不关闭(JFrame,JDialog都可以)

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

2.重写关闭按钮的操作

addWindowListener(new WindowAdapter()
{//窗口关闭时
    @Override
        public void windowClosing(WindowEvent e)
        {
            int i = JOptionPane.showConfirmDialog(null, "是否退出系统?","退出",JOptionPane.YES_NO_OPTION);
            if (i == 0)
            {//有两个按钮,是按钮返回值为0
                dispose();
            }
        }
});


java程序怎样在点击按钮后在当前窗体的布局中弹出一个新窗体
答:if("添加按钮监听".equals(str)) { //在这里新建窗口,或者另外建一个窗口类,在这里new那个类 } } 有问题追问吧,good luck!~

如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口...
答:一般可以隐藏本窗口(setVisible(false);),显示新窗口来实现窗口的跳转。但是隐藏窗口,会在后面浪费系统资源。如果不再使用该窗口,应该彻底销毁(dispose();),释放系统资源 代码和注释 LoginFrame 类 import java.awt.*;import java.awt.event.*;import javax.swing.*;//LoginFrame 登陆窗口 功能...

怎么样做一个JAVA程序:单击按钮,在文本框产生一个200到400 的随机数...
答:一下只写方法,在窗体中,只需要调用这个方法即可~import java.util.*;public int getRandom(){ int i = 0;while(i >=200 || i<=400){ i = nextInt(400);} return i;}

java如何实现“点击一个按钮,出现另一个按钮”功能?麻烦写下,简单点就...
答:import java.awt.*;import java.awt.event.*;///***点击一个按钮出现另一个按钮 public class ButtonTest{ Frame f=new Frame();public ButtonTest(){ Button btn1=new Button("btn1");f.setLayout(new FlowLayout());f.add(btn1);btn1.addActionListener(new AL());f.setBounds(200, ...

java程序中如何实现单击页面a中的按钮跳转到页面b
答:java程序中的jsp页面点击按钮跳转到页面b的方式如下:1.jsp页面的方式如下:跳转 response.sendRedirect("b.jsp")<jsp:forward page="b.jsp"/> 2.在swing里,给button加一个监听器,然后在监听事件中打开另一个页面。在jsp或是静态网页里,onclick=“JavaScript:window.location=’xx‘”...

java如何实现在一个窗口上鼠标左健单击时有一个图形放开时消失?求大师...
答:{ e1.printStackTrace();} } // 鼠标离开窗体 public void mouseExited(MouseEvent e) { } // 鼠标进入窗体 public void mouseEntered(MouseEvent e) { } // 鼠标点击窗体 public void mouseClicked(MouseEvent e) { } });} } 鼠标在窗体按下,窗体会显示一张图片,松开鼠标,图片消失。

如何在java程序中,当点击一个按钮后,关闭当前窗口,开启一个新的窗口...
答:this.setTitle("Java——");jb.setText("确定");jb.setMnemonic('a');this.add(jb);this.setBounds(200, 300, 250, 300);ctionListener就是Swing7实例。} public void actionPerformed(ActionEvent e) {// 实现ActionListener接口的actionPerformed接口。JFrame frame = new JFrame("新窗口");//...

java中怎么实现在点击一个按钮的时候调用其中的一个方法?
答:1、先给“自动运算”按钮添加一个点击事件监听器 2、再该监听器对象内部有相应方法,修改该方法。3、当点击按钮时,会自动调用上面的方法。

java鼠标点击事件怎么做?
答:label.setText(str); } } });e.getButton()返回值分别为NOBUTTON、BUTTON1、BUTTON2、BUTTON3,分别代表着无点击、左击、中间键、右击三种情况。给Java初学者的建议:1,不一定要把java学深入。有多少人搞程序是喜欢这个的,搞程序一半是因为钱多,一半是因为晋升公平。2,初学者学java至少...

用Java编写实现程序,在窗口North上布置三个按钮,并完成按钮点击事件
答:代码如下:import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Graphics;import java.awt.Polygon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class App extends JFrame {public App() {this.setSize(300, ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网