【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语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
随机推荐
- c# 拖拽列表顺序 | 拖拽合并分组 | 移除分组功能
动图演示: 背景: 一开始做功能的时候没有增加排序的索引(sort-index),后来要求做拖拽排序功能:所以写了这个不需要初始排序就可以完成的拖拽功能:如果是table表格排序逻辑和这个相似,这里拿 ...
- SpringBoot系列(七) jpa的使用,以增删改查为例
JPA是Java Persistence API的简称,Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 它是SUN公司推出的一套基 ...
- Vue学习:16.组件通信
组件通信就是指组件之间的数据传递.由于组件的数据是独立的,无法直接访问其他组件的数据,所以想要使用其他组件数据必须通过 组件通信! 在Vue.js中,组件之间的通信可以通过多种方式实现,包括 prop ...
- http与https详解
1.http HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准.HTTP是一个基于TC ...
- 支付宝APP支付 订单已付款成功,请勿重复提交 和 微信H5支付 INVALID_REQUEST 201 商户订单号重复
支付宝APP支付 返回请求给前端SDK 提示报错"订单已付款成功,请勿重复提交" 产生原因:存在商家订单号已经支付成功,重复再次请求的情况.每一笔的支付项目商家订单号是唯一的,如果 ...
- http请求方式GET,POST工具类RestTemplate
http请求方式GET,POST工具类RestTemplate import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serial ...
- golang 所有关键字的列表及释义归类
golang 所有关键字的列表及释义归类,截至1.18版本. [控制结构] if : 条件语句,基于布尔表达式的值决定是否执行特定的代码块. else. else if : 用在 if 语句 ...
- 使用python解析nginx日志
性能测试时,需使用生产环境各接口请求比例分配接口请求比,nginx统计脚本如下: import re import pandas as pd import xlwt obj = re.compile( ...
- nginx中多个server块共用upstream会相互影响吗
背景 nginx中经常有这样的场景,多个server块共用一个域名. 如:upstream有2个以上的域名,nginx配置两个server块,共用一个upstream配置. 那么,如果其中一个域名发生 ...
- Freertos学习:03-任务
--- title: rtos-freertos-03-任务 EntryName: rtos-freertos-03-task date: 2020-06-20 09:15:07 categories ...