在開發應用程序時經常需要選擇文件和選擇顏色的功能。例如,從選擇的文件中導入數據,爲窗體選擇背景顏色等。本節詳細介紹 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
編寫一個程序允許用戶從本地磁盤中選擇一個文件,並將選中的文件顯示到界面。實現代碼如下:
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 所示。
使用 JFileChooser 對象調用 showSaveDialog() 方法會顯示保存文件對話框,即將“int val=fc.showOpenDialog(null);”語句換成“int val=fc.showSaveDialog(null);”。在保存文件對話框中“保存”按鈕對應的常量值是 JFileChooser.APPROVE_OPTION,“取消”按鈕對應的常量值是JFileChooser.CANCEL_ OPTION。圖 2 所示爲文件保存對話框效果。
顏色選擇器
JColorChooser 類提供一個用於允許用戶操作和選擇顏色的控制器窗格。該類提供三個級別的 API:
- 顯示有模式顏色選取器對話框並返回用戶所選顏色的靜態便捷方法。
- 創建顏色選取器對話框的靜態方法,可以指定當用戶單擊其中一個對話框按鈕時要調用的 ActionListener。
- 能直接創建 JColorChooser 窗格的實例(在任何容器中),可以添加 PropertyChange 作爲監聽器以檢測當前“顏色”屬性的更改。
顏色選擇器的常用構造方法如下。
- JColorChooser():創建初始顏色爲白色的顏色選取器窗格。
- JColorChooser(Color initialColor):創建具有指定初始顏色的顏色選取器窗格。
- JColorChooser(ColorSelectionModel model):創建具有指定 ColorSelectionModel 顏色選取器窗格。
一般使用 JColorChooser 類的靜態方法 showDialog(Component component,String title,Color initialColor) 創建一個顏色對話框,在隱藏對話框之前一直堵塞進程。其中 component 參數指定對話框所依賴的組件,title 參數指定對話框的標題,initialColor 參數指定對話框返回的初始顏色,即對話框消失後返回的默認值。
JColorChooser 類的其他常用方法如表 1 所示。
例 2
創建一個示例演示如何使用 JColorChooser 類顯示顏色選擇器。示例代碼非常簡單,如下所示。
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 所示。
也可以不創建 JColorChooser 類實例,直接調用其 showDialog() 方法顯示顏色選擇器。即將如下代碼
JFrame frame=new JFrame("顏色選擇器");
JColorChooser cc=new JColorChooser();
cc.showDialog(frame,"顏色選擇器",Color.white);
換成:
JColorChooser.showDialog(frame,"顏色選擇器",Color.white);
謝謝觀看