1JDialog、文件对话框
•JDialog类
1.JDialog类和JFrame类二者的实例都是底层容器,二者的主要区别是,JDialog类创建的对话框必须要依赖于某个窗口。
通过创建JDialog类或其子类的对象就可以创建对话框。
对话框默认布局是BorderLayout。不需要将对话框添加到另一个容器中。
2.对话框的模式:有模式和无模式。
有模式:当对话框处于激活状态时,不能再激活其他窗口。
无模式:当对话框处于激活状态时,可以再激活其他窗口。
3.主要方法
JDialog():构造一个无标题、初始不可见的对话框。
JDialog(JFrame owner):构造一个无标题、初始不可见、无模式的对话框,owner是对话框所依赖的窗口。
JDialog(JFrame owner,String title):构造一个有标题、初始不可见、无模式的对话框,owner是对话框所依赖的窗口。
JDialog(JFrame owner,String title,boolean modal):构造一个有标题、初始不可见的对话框,owner是对话框所依赖的窗口,modal决定对话框的模式。
•文件对话框
JFileChooser类创建文件对话框,使用该类的构造方法JFileChooser()创建初始不可见的有模式的文件对话框。
然后文件对话框调用下述2个方法:
showSaveDialog(Component a);
showOpenDialog(Component a);
都可以使得对话框可见,只是呈现的外观有所不同。
方法的返回值依赖于单击了文件对话框上的“确定”按钮还是“取消”按钮。
返回值:
JFileChooser.APPROVE_OPTION //单击确认按钮
JFileChooser.CANCEL_OPTION //单击取消按钮
当单击了确认按钮时,可以使用JFileChooser类的getSelecedFile()得到文件对话框所选择的文件。
2.消息对话框、输入对话框、确认对话框
-
消息对话框
JOptionPane.showMessageDialog(Component parentComponent,
String message,
String title,
int messageType)
messageType取值:JOptionPane.WARNING_MESSAGE
messageType取值:JOptionPane.ERROR_MESSAGE
messageType取值:JOptionPane.INFORMATION_MESSAGE
messageType取值:JOptionPane.QUESTION_MESSAGE
messageType取值:JOptionPane.PLAIN_MESSAGE
-
输入对话框
JOptionPane.showInputDialog(Component parentComponent,
String message,
String title,
int messageType)
messageType取值:
JOptionPane.WARNING_MESSAGE
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.QUESTION_MESSAGE
JOptionPane.PLAIN_MESSAGE
如果单击“确定”按钮,将返回用户在文本框中输入的字符串(返回值是String类型)。
-
确认对话框
JOptionPane.showConfirmDialog(Component parentComponent,
String message,
String title,
int messageType)
messageType取值:
JOptionPane.YES_NO_OPTION
JOptionPane.YES_NO_CANCEL_OPTION
JOptionPane.OK_CANCEL_OPTION
返回值是int类型:
JOptionPane.YES_OPTION
JOptionPane.NO_OPTION
JOptionPane.CANCEL_OPTION
JOptionPane.OK_OPTION
3.颜色对话框
ColorChooser.showDialog(Component parentComponent,
String title,
Color initialColor)
4.练习
4.1定义对话框
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class lian extends JFrame {
JButton b;
JButton b1;
JButton b2;
JButton b3;
JButton b4;
public lian() {
init();
setTitle("对话框");
setLocation(300, 400);
setSize(600, 500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init() {
setLayout(new FlowLayout());
b = new JButton("文件对话框");
b1 = new JButton("消息对话框");
b2 = new JButton("输入对话框");
b3 = new JButton("确认对话框");
b4 = new JButton("颜色对话框");
add(b);
add(b1);
add(b2);
add(b3);
add(b4);
b.addActionListener((ActionEvent e) -> {
JFileChooser fileDialog = new JFileChooser();
int s = fileDialog.showOpenDialog(this);
if (s == JFileChooser.APPROVE_OPTION) {
System.out.println(fileDialog.getSelectedFile());
}
// fileDialog.showSaveDialog(this);
});
b1.addActionListener((ActionEvent e) -> {
JOptionPane.showMessageDialog(this, "什么", ";消息对话框", JOptionPane.QUESTION_MESSAGE);
});
b2.addActionListener((ActionEvent e) -> {
String a = JOptionPane.showInputDialog(this, "请输入窗口位置", "输入对话框", JOptionPane.ERROR_MESSAGE);
if (a != null) {
System.out.println(a);
// 把字符串转换成整数,保存在变量m中
// 设置窗口的位置为(m,m)
int m = Integer.parseInt(a);
setLocation((int) Math.pow(m, 2), (int) Math.pow(m, 2));
}
});
b3.addActionListener((ActionEvent e) -> {
int n = JOptionPane.showConfirmDialog(this, "是不是退出?", ";确认对话框", JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
System.exit(5);
}
});
b4.addActionListener((ActionEvent e) -> {
Color c = JColorChooser.showDialog(this, "颜色对话框", b4.getBackground());
if (c != null) {
b4.setBackground(c);
}
});
}
}
4.2mian类
public class xx {
public static void main(String[] args) {
// TODO Auto-generated method stub
lian l=new lian();
}
}