——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对话框的更多相关文章

  1. JAVA GUI学习 - JOptionPane对话框组件学习

    /** * 对话框 - 学习笔记 * @author Wfei * */ public class JoptionPaneKnow extends JFrame { public JoptionPan ...

  2. Java Swing 自定义Dialog确认对话框

    Java Swing 自定义Dialog 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog). 分析:虽然Java提供了 ...

  3. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  4. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  5. paip.java gui swt/jface 最佳实践

    paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...

  6. Android UI系列-----Dialog对话框

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  7. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  8. java GUI (课堂笔记)

    关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...

  9. Android学习(十九)Dialog对话框

    一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...

  10. 事件监听机制——列出指定目录内容、添加Dialog对话框

    事件监听机制理解与Dialog练习 利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...

随机推荐

  1. python-一种去掉前后缀获取子串的方法

    假设有一个字符串,其数据组成方式为:"mode_id1_str_id2",其中id1和id2为任意个数的数字,若存在mode,则id1必然也存在,否则都不存在:id2可有可没有. ...

  2. 程序员面试金典-面试题 02.02. 返回倒数第 k 个节点

    题目: 实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值. 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 k = 2输出: 4说明: ...

  3. pandas、spark计算相关性系数速度对比

    pandas.spark计算相关性系数速度对比 相关性计算有三种算法:pearson.spearman,kenall. 在pandas库中,对一个Dataframe,可以直接计算这三个算法的相关系数c ...

  4. 快速监控 Oracle 数据库

    Oracle 数据库在行业内应用广泛,通常存放的非常重要的数据,监控是必不可少的,本文使用 Cprobe 采集 Oracle 监控数据,极致简单,分享给大家. 安装配置 Oracle 简单起见,我使用 ...

  5. skywalking启动配置agent及数据储存对数据源(mysql,es)版本要求

    skywalking启动配置agent及数据储存对数据源(mysql,es)版本要求 # skywalking-agent.jar的本地磁盘路径-javaagent:D:\SkyWalking\sky ...

  6. MySQL Explain 关键字详解

    概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain + sql explain select * from t1 执行计划各 ...

  7. getRefs is undefined html vue2项目 报错

    vue2项目提示 getRefs is undefined 在div上面写了,ref,还写了v-if 然后再watch中操作了 ref 导致报错. 分析: 组件因为v-if 为 false 没有注册和 ...

  8. Nuxt.js 深入浅出:目录结构与文件组织详解

    title: Nuxt.js 深入浅出:目录结构与文件组织详解 date: 2024/6/18 updated: 2024/6/18 author: cmdragon excerpt: 摘要:本文详述 ...

  9. [iOS]Size Class不同尺寸适配的是什么样的机型(实验向)

    Size Class的定义可以翻阅网友的博客,本文不再赘述http://blog.csdn.net/yongyinmg/article/details/39315829 http://blog.csd ...

  10. 【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。

    RVTools 是 VMware 生态系统中一个非常受欢迎且免费的 Windows 实用工具,用于收集并显示 VMware vSphere 环境中的相关信息,如虚拟机.主机及集群等相关配置.RVToo ...