【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语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
随机推荐
- 为何Mysql数据库上读和代码读取的数据不一致
上周,做了一个同步删除的功能,具体流程是,数据库删除-->调用第三方运行删除接口,同步删除. 具体流程 数据库删除数据后,这里使用标志删除,再调用第三方数据. 在调用第三方数据之前需要通过id查 ...
- vm ware cent os 共享文件夹
1.VM中安装vm-tools 2.在VM 虚拟机设置中添加共享文件夹. 3.重启虚拟机 4.在/mnt/ 里新建一个名为"win"的文件夹 5.在cent os 中执行: vmw ...
- golang 泛型的格式写法
Go语言中的泛型(Generics)是在 Go 1.18 版本中引入的一个重要特性,它允许你编写可重用的代码,而不需要为每种数据类型重复编写相同的逻辑. 泛型通过参数化类型(type paramete ...
- mysql中常用的三种插入数据的语句
mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错: replace into表示插入替换数据,需求表中有Prim ...
- 支付宝spi接口设计验签和返回结果加签注意点,支付宝使用JSONObject对象
支付宝spi接口设计验签和返回结果加签注意点,支付宝使用JSONObject对象 SPI 三方服务接入指南https://opendocs.alipay.com/isv/spiforisv 服务端实现 ...
- 快速上手Python编程
前言 .center { width: auto; display: table; margin-left: auto; margin-right: auto } 类型 原理 优点 缺点 编译型语言 ...
- Wireshark找不到接口
在管理员权限下的命令行窗口输入net start npf即可. 注意是管理员权限下的,否则会拒绝访问.
- ISCSI配置与挂载
ISCSI介绍 iSCSI使用 TCP/IP 协议,来提供网络存储. 客户端挂载后,可以对其进行分区,进行格式化,就好像是安装在本机上的硬盘一样. 为了保证传输速率,通常采用光纤. 配置环境 Cent ...
- arm linux 移植 curl
背景 libcurl是一个跨平台的开源网络协议库,支持http, https, rtsp等多种协议 .libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, ...
- 2 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ
二.开始安装部署RocketMQ 官方网站:https://rocketmq.apache.org/ 各版本要求: 1.版本选取 下载地址: https://github.com/apache/roc ...