java gui弹出提示框_【Java-GUI】02 Dialog对话框

——1、对话框 Dialog

java.awt.Dialog

和Window一样可以独立存在的一个窗体

但是注意:

1、Dialog对象一定需要一个依附的父级窗口

2、两种模式(模式和非模式),模式打开后总是位于父级窗口的上面,且没关闭对话框是无法获得的父级窗口的焦点

案例:

packagecn.dzz;import javax.swing.*;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public classMain {public static voidmain(String[] args) {//创建窗体

Frame frame = newFrame();//创建两个对话框,一个模式的,一个非模式的

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(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

modalDialog.setVisible(true);

}

});

nmdBtn.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(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对象基础上,再向里面添加组件

packagecn.dzz;importjavafx.scene.layout.Border;importjavafx.scene.layout.Pane;import javax.swing.*;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public classMain {public static voidmain(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(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

dialog.setVisible(true);

}

});

frame.pack();

dialog.pack();//不要忘记dialog对象也是一个窗体,也需要进行pack自适应

frame.setVisible(true);

}

}

——2、FileDialog文件对话框

java.awt.FileDialog

表示文件对话框,无法选择模式,由底层操作系统的状态决定

几个方法:

String getDirectory(); 获取打开或者保存的文件路径(绝对路径)

String getFile(); 获取打开或者保存的文件名称(仅名称)

案例:

packagecn.dzz;importjavafx.scene.layout.Border;importjavafx.scene.layout.Pane;import javax.swing.*;import java.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public classMain {public static voidmain(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(newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

openD.setVisible(true); //无论打开还是保存的文件对话框,没有点击确认的最终位置,程序只会停留在这里//确认之后程序向下执行得到我们需要的文件路径和文件名

String directory =openD.getDirectory();

String file=openD.getFile();

System.out.println("打开的路径 " +directory);

System.out.println("打开的文件名 " +file);

}

});

saveFileButton.addActionListener(newActionListener() {

@Overridepublic voidactionPerformed(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

b7bc775489b70c569d081a2aeefdd401.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值