【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语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
随机推荐
- LeetCode 682. Baseball Game 棒球比赛(C++/Java)
题目: You're now a baseball game point recorder. Given a list of strings, each string can be one of th ...
- django通过celery定时任务
settings.py # Broker配置,使用Redis作为消息中间件 BROKER_URL = 'redis://127.0.0.1:6379/0' # BACKEND配置,这里使用redi ...
- BigDecimal的小数位
在使用BigDecimal的divide方法进行除法运算时,需要传入两个参数:被除数和除数.如果要对除法结果进行保留小数位数的处理,可以使用该方法的重载形式,传入一个指定小数位数和舍入规则的MathC ...
- apollo配置json
#json串原文[{"username":"李小刚","sex":"男"},{"username": ...
- FeignClient接口格式
FeignClient接口格式报错信息:{"timestamp":1648015711758,"status":404,"error":&q ...
- golang 所有关键字的列表及释义归类
golang 所有关键字的列表及释义归类,截至1.18版本. [控制结构] if : 条件语句,基于布尔表达式的值决定是否执行特定的代码块. else. else if : 用在 if 语句 ...
- MATLAB神经网络工具箱使用介绍
本文介绍MATLAB软件中神经网络拟合(Neural Net Fitting)工具箱的具体使用方法. 在MATLAB人工神经网络ANN代码这篇文章中,我们介绍了MATLAB软件中神经网络(AN ...
- C++面向对象多级菜单向Arduino的移植
前段时间写了一篇文章<C++面向对象语言自制多级菜单>,文中指出了可以将HeleMenu库进行移植,现已完成技术思路,特此记录. 一.特性 基本与上一篇文章指出的一致,只是将菜单显示和响应 ...
- python基础-字符串str " "
字符串的定义和操作 字符串的特性: 元素数量 支持多个 元素类型 仅字符 下标索引 支持 重复元素 支持 可修改性 不支持 数据有序 是 使用场景 一串字符的记录场景 字符串的相关操作: my_str ...
- VS图片