C語言中文網 目錄
首頁 > Java Swing 閱讀:1,477

Java Swing JFileChooser和JColorChooser:文件選擇器和顏色選擇器

< 上一頁Swing工具欄 Swing對話框下一頁 >

在開發應用程序時經常需要選擇文件和選擇顏色的功能。例如,從選擇的文件中導入數據,為窗體選擇背景顏色等。本節詳細介紹 Swing 中文件選擇器和顏色選擇器的使用。

文件選擇器

文件選擇器為用戶能夠操作系統文件提供了橋梁。swing 中使用 JFileChooser 類實現文件選擇器,該類常用的構造方法如下。
  • JFileChooser():創建一個指向用戶默認目錄的 JFileChooser。
  • JFileChooser(File currentDirectory):使用指定 File 作為路徑來創建 JFileChooser。
  • JFileChooser(String currentDirectoryPath):創建一個使用指定路徑的 JFileChooser。
  • JFileChooser(String currentDirectoryPath, FileSystemView fsv):使用指定的當前目錄路徑和 FileSystem View 構造一個 JFileChooser。

JFileChooser 類的常用方法如下所示。
  • int showOpenDialog(Component parent):彈出打開文件對話框。
  • int showSaveDialog(Component parent):彈出保存文件對話框。

例 1

編寫一個程序允許用戶從本地磁盤中選擇一個文件,并將選中的文件顯示到界面。實現代碼如下:
package ch18;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
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,分別用于表示單擊“取消”按鈕退出對話框,無文件選取、正常選取文件和發生錯誤或者對話框已被解除而退出對話框。因此在文本選擇器交互結束后,應進行判斷是否從對話框中選擇了文件,然后根據返回值情況進行處理。

運行程序,單擊“瀏覽”按鈕,會彈出選擇文件的對話框,如果取消選擇,此時會顯示未選擇文件;否則就會顯示選擇的文件路徑及文件名稱,如圖 1 所示。

 
文件保存對話框
圖1 文件選擇對話框

使用 JFileChooser 對象調用 showSaveDialog() 方法會顯示保存文件對話框,即將“int val=fc.showOpenDialog(null);”語句換成“int val=fc.showSaveDialog(null);”。在保存文件對話框中“保存”按鈕對應的常量值是 JFileChooser.APPROVE_OPTION,“取消”按鈕對應的常量值是JFileChooser.CANCEL_ OPTION。圖 2 所示為文件保存對話框效果。


文件選擇對話框
圖2 文件保存對話框

顏色選擇器

JColorChooser 類提供一個用于允許用戶操作和選擇顏色的控制器窗格。該類提供三個級別的 API
  1. 顯示有模式顏色選取器對話框并返回用戶所選顏色的靜態便捷方法。
  2. 創建顏色選取器對話框的靜態方法,可以指定當用戶單擊其中一個對話框按鈕時要調用的 ActionListener。
  3. 能直接創建 JColorChooser 窗格的實例(在任何容器中),可以添加 PropertyChange 作為監聽器以檢測當前“顏色”屬性的更改。

顏色選擇器的常用構造方法如下。
  • JColorChooser():創建初始顏色為白色的顏色選取器窗格。
  • JColorChooser(Color initialColor):創建具有指定初始顏色的顏色選取器窗格。
  • JColorChooser(ColorSelectionModel model):創建具有指定 ColorSelectionModel 顏色選取器窗格。

一般使用 JColorChooser 類的靜態方法 showDialog(Component component,String title,Color initialColor) 創建一個顏色對話框,在隱藏對話框之前一直堵塞進程。其中 component 參數指定對話框所依賴的組件,title 參數指定對話框的標題,initialColor 參數指定對話框返回的初始顏色,即對話框消失后返回的默認值。

JColorChooser 類的其他常用方法如表 1 所示。

表1 JColorChooser類的常用方法
方法名稱 說明
getColor() 獲取顏色選取器的當前顏色值
getDragEnabled() 獲取dragEnabled 屬性的值
setColor(Color color) 將顏色選取器的當前顏色設置為指定顏色
setColor(int c) 將顏色選取器的當前顏色設置為指定顏色
setColor(int r,int g,int b) 將顏色選取器的當前顏色設置為指定的 RGB 顏色
setDragEnabled(boolean b) 設置 dragEnabled 屬性,該屬性必須為 true 才能啟用對
此組件的自動拖動處理(拖放操作的第一部分)

例 2

創建一個示例演示如何使用 JColorChooser 類顯示顏色選擇器。示例代碼非常簡單,如下所示。
package ch18;
import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
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);
    }
}

使用 JFrame 作為容器,在該容器內顯示一個標題是“顏色選擇器”、使用白色作為默認色的顏色選擇器。運行后的顏色選擇器窗口如圖 3 所示。

顏色選擇器
圖3 顏色選擇器

也可以不創建 JColorChooser 類實例,直接調用其 showDialog() 方法顯示顏色選擇器。即將如下代碼
JFrame frame=new JFrame("顏色選擇器");
JColorChooser cc=new JColorChooser();
cc.showDialog(frame,"顏色選擇器",Color.white);
換成:
JColorChooser.showDialog(frame,"顏色選擇器",Color.white);
< 上一頁Swing工具欄 Swing對話框下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo