JColorChooser和JFileChooser

Swing提供了JColorChooser和JFileChooser这两种对话框,可以很方便的完成演示的选择和本地文件的选择。

1.JColorChooser

        JColorChooser用于创建颜色选择器对话框,该类的用法非常简单,只需要调用它的静态方法就可以快速生成一个颜色选择对话框:

public static Color showDialog(Component component, String title,color initialColor)

/*

        参数:

                component:指定当前对话框的父组件

                title:当前对话框的名称

                initialColor:指定默认选中的颜色

        返回值:

                返回用户选中的颜色

*/

package com.aynu.layout;

import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

public class JColorChooserDemo {

    JFrame jFrame =new JFrame("测试颜色选择器");

    JTextArea jta =new JTextArea("我爱中华",8,30);

    //声明按钮
    JButton btn = new JButton(new AbstractAction("改变文本框背景颜色") {
        @Override
        public void actionPerformed(ActionEvent e) {
            //弹出一个颜色选择器
            Color result = JColorChooser.showDialog(jFrame, "颜色选择器", Color.white);

            //修改文本框背景
            jta.setBackground(result);
        }
    });

    public void init(){

        //组装视图
        jFrame.add(jta);
        jFrame.add(btn, BorderLayout.SOUTH);



        jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
        jFrame.pack();
        jFrame.setVisible(true);
    }

    public static void main(String[] args) {
        new JColorChooserDemo().init();
    }
}

2.JFileChooser

         JFileChooser的功能与AWT中的FileDialog基本相似,也是用于生成"打开文件"、"保存文件"对话框。与FileDialog不同的是,与JFileChooser无需依赖于本地平台的GUI,它由100%纯java实现,在所有平台上具有完全相同的行为,并可以在所有平台上具有相同的外观风格。

JFileChooser的使用步骤

1.创建JFileChooser对象:

JFileChooser chooser = new JFileChooser("D:\\a");//指定默认打开的本地磁盘路径

2.调用FileChooser的一系列可选方法,进行初始化

setSelectedFile(File file)/setSelectedFiles(File[ ] selectedFiles):设定默认选中的文件

setMultiSelectionEnabled(boolean b):设置是否允许多选,默认是单选

setFileSelectionMode(int mode):设置可以选择内容,例如文件、文件夹等,默认只能选择文件

3.打开文件对话框

showOpenDialog(Component parent):打开文件加载对话框,并指定父组件

showSaveDialog(Component parent):打开文件保存对话框,并指定父组件

4.获取用户选择的结果

File getSelectedFile():获取用户选择的一个文件

File[ ] getSelectedFiles():获取用户选择的多个文件

package com.aynu.layout;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class JFileChooserDemo {

    //创建窗口对象
    JFrame jf = new JFrame("测试JFileChooser");

    //创建菜单条
    JMenuBar jmb = new JMenuBar();
    //创建菜单
    JMenu jMenu = new JMenu("文件");

    //创建菜单项
    JMenuItem open = new JMenuItem(new AbstractAction("打开") {
        @Override
        public void actionPerformed(ActionEvent e) {
            //显示一个文件选择器
            JFileChooser fileChooser = new JFileChooser(".");
            fileChooser.showOpenDialog(jf);

            //获取用户选择的文件
            File file = fileChooser.getSelectedFile();
            //进行显示
            try {
                image = ImageIO.read(file);
                drawArea.repaint();
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        }
    });

    JMenuItem save = new JMenuItem(new AbstractAction("另存为") {
        @Override
        public void actionPerformed(ActionEvent e) {
            //显示一个文件选择器
            JFileChooser fileChooser = new JFileChooser(".");
            fileChooser.showSaveDialog(jf);

            //获取用户选择的保存文件路径
            File file = fileChooser.getSelectedFile();

            //进行保存
            try {
                ImageIO.write(image,"jpeg",file);
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }

        }
    });



    BufferedImage image;

    //Swing提供的图片,都使用了图像缓冲区技术
    private class MyCanvas extends JPanel{
        @Override
        public void paint(Graphics g) {
            //把图片绘制的组件上即可
            g.drawImage(image,0,0,null);
        }
    }

    MyCanvas drawArea = new MyCanvas();




    public void init(){
        //组装视图
        jMenu.add(open);
        jMenu.add(save);

        jmb.add(jMenu);

        jf.setJMenuBar(jmb);

        drawArea.setPreferredSize(new Dimension(740,500));
        jf.add(drawArea);


        //显示jf
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
        jf.setVisible(true);
    }

    public static void main(String[] args) {
        new JFileChooserDemo().init();
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iuiu啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值