JAVA的弹窗怎么做? 20

我是初学者,现在想自己做一个简单的记事本程序,但是不会做弹窗。我想实现的功能是,在关闭程序的时候,像WINDOWS中的记事本一样,会弹出窗口询问是否要保存修改后的文本。这... 我是初学者,现在想自己做一个简单的记事本程序,但是不会做弹窗。
我想实现的功能是,在关闭程序的时候,像WINDOWS中的记事本一样,会弹出窗口询问是否要保存修改后的文本。这个弹窗该用哪个类来实现?
另外,麻烦说一下如何判断文本是否已经更改过了。比如,我打开了一个文本文档,但是没有做任何修改,这个时候点击关闭,不会弹出窗口询问。而做了修改之后,就会弹出窗口询问。
我的分不多,请大神多多帮忙,十分感谢!
展开
 我来答
雪飞潇潇
2017-07-31 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:868万
展开全部

JAVA弹窗,有下面常见的2种方法实现:

  1. 通过JDialog(模式窗口) 类来实现.里面的写法类似JFrame

    重点方法提示: setModal(true);

    //当设置为true表示,如果不关闭这个弹窗,那么主界面的其他组件都无法操作,该弹窗置于其他窗口的前面

    //当设置为false表示,可以绕开本弹窗,对主界面的其他组件进行操作


    优点: 功能强大,  扩展性强

    缺点: 代码量大.  

    示例图



  2. 通过JOptionPane(提示框) 来实现 

    效果图如下

    优点: 代码量少,简单,方便, 普通场景已经够用

    缺点: 扩展性不够, 复杂逻辑难以实现.


  3. 下面写一个具体案例

    场景:当用于对文本域的文字,进行操作后,那么退出时,提示用户, 是否要保存已经更改后的内容.  如果用户没有修改内容,那么不用提示

    重点代码 

    addDocumentListener-->用于实现对文本内容发生改变时进行响应

    addWindowListener--->用于实现对窗口进行操作时进行响应

    完整代码如下

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

public class JDDemo extends JFrame implements DocumentListener,WindowListener{
JTextArea jta;
boolean flag;
public JDDemo() {
jta = new JTextArea();//文本域
jta.setText("床前明月光");//文本域的文字-->可以通过IO加载txt文档的文字
jta.setFont(new Font("宋体",Font.BOLD, 20));//文本域的字体
jta.setLineWrap(true);//设置自动换行
jta.getDocument().addDocumentListener(this);//添加文档变化事件的响应.比如修改,删除等
JScrollPane jsp = new JScrollPane(jta);//滚动面板(当文字太多时,显示滚动条)
add(jsp);

setTitle("主窗口");//标题
setSize(300, 260);//大小
setLocationRelativeTo(null);//居中
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//点击窗口的关闭按钮时,执行windowClosing的代码
addWindowListener(this);
setVisible(true);//窗口可见
}
public static void main(String[] args) {
new JDDemo();
}

//实现WindowListener接口,需要重写下面的6个方法, windowClosing专门处理关闭时的方法
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
if(flag){
int n = JOptionPane.showConfirmDialog(null, "已经更改了内容,需要保存后再退出吗?", "提示",JOptionPane.YES_NO_OPTION);
//n等于-1表示关闭了弹出的对话框等情况的默认值
//n等于0(JOptionPane.YES_OPTION)表示选择了Yes
//n等于1(JOptionPane.NO_OPTION)表示选择了No
if(n==JOptionPane.YES_OPTION){
//把文字保存到文件的代码省略...
System.out.println("正在使用IO进行保存..ing");
closeFrame();//关闭窗口并退出
}else if(n==JOptionPane.NO_OPTION){
System.out.println("放弃保存修改.马上退出");
closeFrame();
}

}else{
closeFrame();
}
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}


//文档事件,有下面三个,如果触发其中一个,都可以认为修改了文档,所以需要在退出时进行提示,是否保存
public void insertUpdate(DocumentEvent e) {//插入
flag=true;
}
public void removeUpdate(DocumentEvent e) {//删除
flag=true;
}
public void changedUpdate(DocumentEvent e) {//改变
flag=true;
}

//关闭窗口的方法
public void closeFrame(){
this.setVisible(false);//窗口不可见
this.dispose();//窗口销毁
System.exit(0);//JVM虚拟机退出
}
}

运行效果图:

马川034
2017-07-18 · TA获得超过175个赞
知道小有建树答主
回答量:231
采纳率:87%
帮助的人:106万
展开全部
你指的是Java swing的弹窗吗?
如果是那就比较简单了,你可以新建一个dialog,在dialog中写入你所需要提示的内容,设置dialog出现的位置及大小即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BORN815
2015-10-02 · 超过10用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:18.3万
展开全部
PrintWriter p=new PrintWriter();
p.witer("自己写的弹窗内容")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式