【Java-GUI】02 Dialog对话框
——1、对话框 Dialog
java.awt.Dialog
和Window一样可以独立存在的一个窗体
但是注意:
1、Dialog对象一定需要一个依附的父级窗口
2、两种模式(模式和非模式),模式打开后总是位于父级窗口的上面,且没关闭对话框是无法获得的父级窗口的焦点
案例:
package cn.dzz;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Main {
public static void main(String[] args) {
// 创建窗体
Frame frame = new Frame(); // 创建两个对话框,一个模式的,一个非模式的
Dialog modalDialog = new Dialog(frame, "modal-dialog", true);
Dialog nonModalDialog = new Dialog(frame, "non-modal-dialog", false);
// 通过setBounds来实现出现在界面上的位置
modalDialog.setBounds(20,30,300,200);
nonModalDialog.setBounds(20,30,300,200); // 通过按钮触发弹出
Button mdBtn = new Button("modal-dialog-button");
Button nmdBtn = new Button("non-modal-dialog-button"); mdBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modalDialog.setVisible(true);
}
}); nmdBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
nonModalDialog.setVisible(true);
}
}); Box verticalBox = Box.createVerticalBox();
verticalBox.add(mdBtn);
verticalBox.add(nmdBtn);
frame.add(verticalBox, BorderLayout.CENTER); // 可见 与 自适应
frame.setVisible(true);
frame.pack();
}
}
案例2:在dialog对象基础上,再向里面添加组件
package cn.dzz; import javafx.scene.layout.Border;
import javafx.scene.layout.Pane; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Main {
public static void main(String[] args) {
Frame frame = new Frame("GUI-LESSON"); Box verticalBox = Box.createVerticalBox();
Button button = new Button("dialog-demo");
verticalBox.add(button); frame.add(verticalBox, BorderLayout.CENTER); // dialog嵌入
Dialog dialog = new Dialog(frame, "dialog", true); Box verticalBox1 = Box.createVerticalBox();
verticalBox1.add(new TextField(20));
verticalBox1.add(new Button("OK"));
dialog.add(verticalBox1, BorderLayout.CENTER); button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true);
}
}); frame.pack();
dialog.pack(); // 不要忘记dialog对象也是一个窗体,也需要进行pack自适应
frame.setVisible(true);
}
}
——2、FileDialog文件对话框
java.awt.FileDialog
表示文件对话框,无法选择模式,由底层操作系统的状态决定
几个方法:
String getDirectory(); 获取打开或者保存的文件路径(绝对路径)
String getFile(); 获取打开或者保存的文件名称(仅名称)
案例:
package cn.dzz; import javafx.scene.layout.Border;
import javafx.scene.layout.Pane; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Main {
public static void main(String[] args) {
Frame frame = new Frame("GUI-LESSON"); // 先来设置打开文件对话框的按钮
Box verticalBox = Box.createVerticalBox();
Button openFileButton = new Button("openFileButton");
Button saveFileButton = new Button("saveFileButton");
verticalBox.add(openFileButton);
verticalBox.add(saveFileButton);
frame.add(verticalBox, BorderLayout.CENTER); // 创建两个文件对话框对象
FileDialog openD = new FileDialog(frame, "open-target", FileDialog.LOAD);
FileDialog saveD = new FileDialog(frame, "save-target", FileDialog.SAVE); // 按钮触发的事件处理
openFileButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
openD.setVisible(true); // 无论打开还是保存的文件对话框,没有点击确认的最终位置,程序只会停留在这里
// 确认之后程序向下执行得到我们需要的文件路径和文件名
String directory = openD.getDirectory();
String file = openD.getFile();
System.out.println("打开的路径 " + directory);
System.out.println("打开的文件名 " + file);
}
});
saveFileButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
saveD.setVisible(true); String directory = saveD.getDirectory();
String file = saveD.getFile();
System.out.println("保存的路径 " + directory);
System.out.println("保存的文件名 " + file);
}
}); frame.pack();
openD.pack();
saveD.pack();
frame.setVisible(true);
}
}
实际使用时可以发现,如果最后取消了文件选择
那么获取文件路径和文件名的方法返回的值为NULL
打开的路径 C:\Users\Administrator\IdeaProjects\GUI-Lesson\
打开的文件名 GUI-Lesson.iml
保存的路径 null
保存的文件名 null
打开的路径 null
打开的文件名 null
保存的路径 null
保存的文件名 null

【Java-GUI】02 Dialog对话框的更多相关文章
- JAVA GUI学习 - JOptionPane对话框组件学习
/** * 对话框 - 学习笔记 * @author Wfei * */ public class JoptionPaneKnow extends JFrame { public JoptionPan ...
- Java Swing 自定义Dialog确认对话框
Java Swing 自定义Dialog 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog). 分析:虽然Java提供了 ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- paip.java gui swt/jface 最佳实践
paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...
- Android UI系列-----Dialog对话框
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- java GUI (课堂笔记)
关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...
- Android学习(十九)Dialog对话框
一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...
- 事件监听机制——列出指定目录内容、添加Dialog对话框
事件监听机制理解与Dialog练习 利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
随机推荐
- kettle从入门到精通 第三十四课 kettle 错误处理
1.我们在平常写应用程序的时候,需要主动捕获异常或者错误,不然程序有可能异常退出.同样kettle 也支持异常或者错误处理,下图展示的是在批量插入数据的时候捕获异常,如唯一健冲突,死锁等,并将错误信息 ...
- 此计算机上不存在虚拟机管理服务(VMMS)。请确保已启用“Hyper-V 服务”功能。
此计算机上不存在虚拟机管理服务(VMMS).请确保已启用"Hyper-V 服务"功能. 解决方法: 在主板BIOS 里开启VT. Intel Virtualization Tech ...
- GO语言 GOLANG 上传微信电子小票图片
GO语言 GOLANG 上传微信电子小票图片.GO HTTP POST 图片文件.GO 上传图片文件.multipart/form-data.image/jpeg.image/png. GO 环境: ...
- 微信支付(付款码支付,条码支付,刷卡支付)左上角LOGO显示
微信支付(付款码支付,条码支付,刷卡支付)左上角LOGO显示 如果你上送的sub_appid 公众号(小程序),优先显示你公众号(小程序)的LOGO,如果你的公众号(小程序)未设置LOGO,会显示上游 ...
- FolkMQ 1.6.0(纯血国产,适合信创)
FolkMQ 是个"新式"的消息中间件.强调:"简而强".可内嵌,可单机,可集群(部署包为 9Mb). 功能简表 角色 功能 生产者(客户端) 发布普通消息.Q ...
- 如何应用 matrix3d 映射变幻
如何应用 matrix3d 映射变幻 先上 demo 记得是在 2015 看到过的一个 html5 演示效果, 很惊艳 当时没明白如何实现,现在我会了,做一个类似的: 又弄了一个拖动的 demo 我数 ...
- 01-前端开发Vscode插件配置
01 自动保存配置 02 空格渲染方式 配置好以后,可以看到代码的空格有几个,以点的方式呈现,1个点表示1个空格 03 图标插件 VSCode Great Icons 04 缩进 推荐使用2 05 v ...
- Linux驱动中的等待队列与休眠
Linux驱动中的等待队列与休眠 原文:https://blog.csdn.net/mengluoxixiang/article/details/46239523?spm=1001.2014.3001 ...
- Ubuntu 安装 gitweb + Apache2
背景 之前已经使用了gerrit进行代码管理,但是在有些代码由于内部技术管理不当而丢失了Review记录. 因此找到了通过gitweb弥补的问题. 做法 安装 sudo apt-get install ...
- ffmpeg -使用总结
ffmpeg 使用总结,不定期更新 ---------------------------------------- 1. 将截图合成影片: ffmpeg -i ./shot/%d.tiff -thr ...