本文目录一览:
JAVA的弹窗怎么做?
JAVA弹窗有下面常见的2种方法实现:
- 通过
JDialog
(模式窗口)类来实现,里面的写法类似JFrame
重点方法提示:setModal(true);
- 当设置为
true
表示如果不关闭这个弹窗,那么主界面的其他组件都无法操作,该弹窗置于其他窗口的前面 - 当设置为
false
表示可以绕开本弹窗,对主界面的其他组件进行操作
优点: 功能强大,扩展性强
缺点: 代码量大
- 当设置为
- 通过
JOptionPane
(提示框)来实现
优点: 代码量少,简单,方便,普通场景已经够用
缺点: 扩展性不够,复杂逻辑难以实现
示例场景
当用户对文本域的文字进行操作后,在退出时提示用户是否要保存已经更改后的内容。如果用户没有修改内容,则不需要提示。
重点代码
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虚拟机退出
}
}
运行效果图
哪里有java视频教程?求推荐。
以下是几个推荐的Java视频教程网站:
- Codecademy
Codecademy 是一家国外知名的在线学习编程的网站,虽然全英文,但大多数单词通俗易懂,适合提高英语阅读能力。Codecademy 会根据你的爱好和目前水平推荐合适的课程。 - 慕课网
慕课网是国内最好的编程类学习网站之一,资源丰富,以独家视频教程为特色,学习成本较低,几乎涵盖所有主流技术。 - 实验楼
实验楼是以实验为核心的 IT 在线教育网站,格外注重实践操作,提供各种挑战任务,学习效率较高。
哪有免费的JAVA教程?
以下是一些免费的 Java 教程资源:
- 百度网盘免费资源在线学习
- 链接:(未提供)
- 提取码:qrd2
教程内容包括:
- 千锋 Java 基础教程:第 19 章 项目实战
- 千锋 Java 基础教程:第 18 章 GUI 事件处理
- 千锋 Java 基础教程:第 17 章 XML 与 JSON
- 千锋 Java 基础教程:第 16 章 注解
- 千锋 Java 基础教程:第 15 章 枚举
- 千锋 Java 基础教程:第 14 章 正则表达式
- 千锋 Java 基础教程:第 13 章 泛型
- 千锋 Java 基础教程:第 12 章 反射与内省
- 千锋 Java 基础教程:第 11 章 网络编程
- 千锋 Java 基础教程:第 10 章 多线程与并发
- 千锋 Java 基础教程:第 09 章 集合
- 千锋 Java 基础教程:第 08 章 文件与 IO
- 千锋 Java 基础教程:第 07 章 常用类库
- 千锋 Java 基础教程:第 06 章 Eclipse 与异常处理