Java Swing JFileChooser和JColorChooser:文件选择器和颜色选择器

1 JFileChooser: 文件选择器

文件选择器为用户能够操作系统文件提供了桥梁。swing 中使用 JFileChooser 类实现文件选择器。

1.1 JFileChooser 构造函数

JFileChooser():创建一个指向用户默认目录的 JFileChooser。
JFileChooser(File currentDirectory):使用指定 File 作为路径来创建 JFileChooser。
JFileChooser(String currentDirectoryPath):创建一个使用指定路径的 JFileChooser。
JFileChooser(String currentDirectoryPath, FileSystemView fsv):使用指定的当前目录路径和 FileSystem View 构造一个 JFileChooser。

1.2 JFileChooser 常用方法

int showOpenDialog(Component parent):弹出打开文件对话框。
int showSaveDialog(Component parent):弹出保存文件对话框。

1.3 示例

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

public class JFileChooserDemo {
    private JLabel label=new JLabel("所选文件路径:");
    private JTextField jtf=new JTextField(25);
    private JButton button=new JButton("浏览");
    public JFileChooserDemo() {
        JFrame jf=new JFrame("文件选择器");
        JPanel panel=new JPanel();
        panel.add(label);
        panel.add(jtf);
        panel.add(button);
        jf.add(panel);
        jf.pack();    //自动调整大小
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        button.addActionListener(new MyActionListener());    //监听按钮事件
    }
    //Action事件处理
    class MyActionListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent arg0)
        {
            JFileChooser fc=new JFileChooser("F:\\");
            int val=fc.showOpenDialog(null);    //文件打开对话框
            if(val==fc.APPROVE_OPTION)
            {
                //正常选择文件
                jtf.setText(fc.getSelectedFile().toString());
            }
            else
            {
                //未正常选择文件,如选择取消按钮
                jtf.setText("未选择文件");
            }
        }
    }
    public static void main(String[] args)
    {
        new JFileChooserDemo();
    }
}

在上述程序中使用内部类的形式创建了一个名称为 MyActionListener 的类,该类实现了 ActionListener 接口。其中 showOpenDialog() 方法将返回一个整数,可能取值情况有 3 种:JFileChooser.CANCEL—OPTION、JFileChooser.APPROVE_OPTION 和 JFileChooser.ERROR_OPTION,分别用于表示单击“取消”按钮退出对话框,无文件选取、正常选取文件和发生错误或者对话框已被解除而退出对话框。因此在文本选择器交互结束后,应进行判断是否从对话框中选择了文件,然后根据返回值情况进行处理。
运行程序,单击“浏览”按钮,会弹出选择文件的对话框,如果取消选择,此时会显示未选择文件;否则就会显示选择的文件路径及文件名称。
使用 JFileChooser 对象调用 showSaveDialog() 方法会显示保存文件对话框,即将“int val=fc.showOpenDialog(null);”语句换成“int val=fc.showSaveDialog(null);”。在保存文件对话框中“保存”按钮对应的常量值是 JFileChooser.APPROVE_OPTION,“取消”按钮对应的常量值是JFileChooser.CANCEL_ OPTION。

1.4 运行效果

在这里插入图片描述

2 JColorChooser 颜色选择器

JColorChooser 类提供一个用于允许用户操作和选择颜色的控制器窗格。该类提供三个级别的 API:

  • 显示有模式颜色选取器对话框并返回用户所选颜色的静态便捷方法。
  • 创建颜色选取器对话框的静态方法,可以指定当用户单击其中一个对话框按钮时要调用的 ActionListener。
  • 能直接创建 JColorChooser 窗格的实例(在任何容器中),可以添加 PropertyChange 作为监听器以检测当前“颜色”属性的更改。

2.1 JColorChooser 构造方法

JColorChooser():创建初始颜色为白色的颜色选取器窗格。
JColorChooser(Color initialColor):创建具有指定初始颜色的颜色选取器窗格。
JColorChooser(ColorSelectionModel model):创建具有指定 ColorSelectionModel 颜色选取器窗格。

2.2 JColorChooser 常用方法

getColor()	获取颜色选取器的当前颜色值
getDragEnabled()	获取dragEnabled 属性的值
setColor(Color color)	将颜色选取器的当前颜色设置为指定颜色
setColor(int c)	将颜色选取器的当前颜色设置为指定颜色
setColor(int r,int g,int b)	将颜色选取器的当前颜色设置为指定的 RGB 颜色
setDragEnabled(boolean b)	设置 dragEnabled 属性,该属性必须为 true 才能启用对
此组件的自动拖动处理(拖放操作的第一部分)

一般使用 JColorChooser 类的静态方法 showDialog(Component component,String title,Color initialColor) 创建一个颜色对话框,在隐藏对话框之前一直堵塞进程。其中 component 参数指定对话框所依赖的组件,title 参数指定对话框的标题,initialColor 参数指定对话框返回的初始颜色,即对话框消失后返回的默认值。

2.3 示例

import javax.swing.*;
import java.awt.*;

public class JColorChooserDemo {
    public static void main(String[] args) {
        JFrame frame=new JFrame("颜色选择器");
        JColorChooser cc=new JColorChooser();
        cc.showDialog(frame,"颜色选择器",Color.white);
        //JColorChooser.showDialog(frame,"颜色选择器",Color.white);
        //设置窗口的关闭动作、标题、大小位置以及可见性等
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(100,100,400,200);
        frame.setVisible(true);
    }
}

2.4 运行效果

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 菜单栏:用JMenuBar实现,包含文件、编辑、格式、查找、帮助等菜单项。 2. 工具栏:用JToolBar实现,包含打开、保存、剪切、复制、粘贴、查找等工具按钮。 3. 状态栏:用JLabel实现,显示当前光标所在行、列、文本长度等信息。 4. 文本文件读取和保存:使用JFileChooser实现文件选择器,读取和保存文本文件。 5. 设置字体字号颜色:通过JFontChooser实现字体和字号的选择,通过JColorChooser实现颜色的选择。 6. 查找功能:使用JOptionPane实现查找对话框,通过正则表达式实现查找功能。 代码注释: ``` // 导入必要的包 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.filechooser.*; import java.io.*; public class TextEditor extends JFrame implements ActionListener { private JTextArea textArea; // 文本编辑区 private JLabel statusLabel; // 状态栏 private JFileChooser fileChooser; // 文件选择器 public TextEditor() { // 设置窗口标题和大小 setTitle("Java文本编辑器"); setSize(800, 600); // 创建菜单栏和菜单项 JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("文件"); JMenuItem openItem = new JMenuItem("打开"); JMenuItem saveItem = new JMenuItem("保存"); fileMenu.add(openItem); fileMenu.add(saveItem); menuBar.add(fileMenu); setJMenuBar(menuBar); // 创建工具栏和工具按钮 JToolBar toolBar = new JToolBar(); JButton openButton = new JButton(new ImageIcon("open.png")); JButton saveButton = new JButton(new ImageIcon("save.png")); toolBar.add(openButton); toolBar.add(saveButton); add(toolBar, BorderLayout.NORTH); // 创建文本编辑区 textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); add(scrollPane, BorderLayout.CENTER); // 创建状态栏 statusLabel = new JLabel("行: 1 列: 1 长度: 0"); add(statusLabel, BorderLayout.SOUTH); // 创建文件选择器 fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); // 注册事件监听器 openItem.addActionListener(this); saveItem.addActionListener(this); openButton.addActionListener(this); saveButton.addActionListener(this); textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent e) { // 更新状态栏信息 int pos = textArea.getCaretPosition(); int row = 1, col = 1; try { row = textArea.getLineOfOffset(pos) + 1; col = pos - textArea.getLineStartOffset(row - 1) + 1; } catch (Exception ex) {} int len = textArea.getText().length(); statusLabel.setText("行: " + row + " 列: " + col + " 长度: " + len); } }); // 显示窗口 setVisible(true); } // 处理菜单项和工具按钮的点击事件 public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("打开")) { // 打开文件 int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); textArea.setText(""); String line; while ((line = reader.readLine()) != null) { textArea.append(line + "\n"); } reader.close(); } catch (Exception ex) { ex.printStackTrace(); } } } else if (e.getActionCommand().equals("保存")) { // 保存文件 int result = fileChooser.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write(textArea.getText()); writer.close(); } catch (Exception ex) { ex.printStackTrace(); } } } } public static void main(String[] args) { new TextEditor(); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

书香水墨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值