java高级开发 第十一章——对话框

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();
    }

}

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值