創建一個JFrame
下面用簡單的實例演示了Java Swing創建一個能輸入內容的窗口
public class frameTest(){
public static void Main(String args[]){
//創建JFrame對象,JFrame用來在屏幕上顯示一個Windows窗口。
JFrame frame = new JFrame("第一個JFrame");
// 建立一個文本輸入域對象,由於文本輸入域是JComponent的子類,可以採用以
// 下方法定義。
JComponent comp = new JTextArea();
// 將上面建立的文本輸入域加入到frame對象
// 默認情況下,frame的內容面板(容器)採用BorderLayout佈局,
// 這裏是將文本輸入域放入BorderLayout佈局的Center部位。
// 有關BorderLayout佈局的內容,請查閱
// http://gyfinjava.blog.com.cn/archives/2007/2161340.shtml
frame.getContentPane().add(comp, BorderLayout.CENTER);
// 設置其高度和寬度分別爲:288像素和188像素
frame.setSize(288,188);
// 顯示該Frame
frame.setVisible(true);
}
}
JFrame的預定義動作事件
在Java Swing教程1中的Main方法中加入以下代碼:
//當用戶選擇窗口的退出按鈕(窗口右上角的X),
//或選擇窗體功能菜單的推出項時的動作
//下行代碼可以使單擊退出按鈕時,退出該JFrame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//下行代碼可以使JFrame的退出按鈕失效
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
創建沒無邊框的Frame(Window)
該實例演示了怎樣創建一個沒有邊框的Frame(Window)。如果要創建
不顯示邊框的Frame(Window),則推薦使用JWindow。
import javax.swing.JWindow;
public class JWindowTest {
public static void main(String[] args){
//創建JWindows對象
JWindow window = new JWindow();
// 這裏,一樣可以通過教程getContentPane().add()方法爲該JWindow增加組件
//window.getContentPane().add(JComponent, BorderLayout.CENTER);
// 設置初始化大小
window.setSize(200, 200);
// 顯示該窗體
window.setVisible(true);
}
}
Java Swing教程4-文件選擇框
Java爲文件選擇框提供了JFileChooser類API。通過使用該類,可以很方便的現實文件選擇對話框。見下例:
//建立文件選擇框對象
JFileChooser fc=new JFileChooser();
//設定文件選擇框標題
fc.setDialogTitle("Open class File");
//顯示文件選擇框,在選擇後將結果儲存到returnVal變量中
int returnVal = fc.showOpenDialog(app.getFrameInstance());
//如果用戶選擇了文件,並點擊了"Opne/打開"按鈕,顯示用戶選擇的文件全名路徑,
//如果用戶點擊"Close/關閉"按鈕,以及其它方式退出文件選擇框,則什麼也不做。
if (returnVal == JFileChooser.APPROVE_OPTION){
File file = fc.getSelectedFile();
System.out.println(file.getPath());
}
注意在文件選擇對話框中,可以進行選擇目錄的操作,只需要用FileChooser對象的setFileSelectionMode()方法指定其選擇模式爲目錄選擇。見下面代碼
//上例中可以在文件對話框顯示語句前加上下面代碼,使對話框成爲目錄選擇對話框
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
在文件選擇過程中,我們可以爲文件選擇對話框設置過濾器,有了過濾器的對話框,會用下拉列表的方式將過濾的文件名特徵顯示在"文件類型"組合框中,並將不符合條件的文件名和目錄名過濾掉(不顯示)。
爲一個文件選擇對話框設置過濾器需要定義過濾器類,見下例:
public class ClassFileFilter extends FileFilter{
public boolean accept(File f) {
String filename = f.getName();
return filename.endsWith(".class");
}
public String getDescription() {
return "*.class";
}
}
該類定義了一個過濾Java類文件"*.class"的過濾器。
將它增加到文件選擇對話框中,可以過濾出以.class爲尾綴的文件。見下面代碼:
fc.addChoosableFileFilter(new ClassFileFilter());
針對一個對話框,我們可以爲其加裝多個過濾器。這裏有對過濾器更加詮釋的代碼:
public class ImageFilter extends FileFilter {
//Accept all directories and all gif, jpg, tiff, or png files.
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String extension = Utils.getExtension(f);
if (extension != null) {
if (extension.equals(Utils.tiff) ||
extension.equals(Utils.tif) ||
extension.equals(Utils.gif) ||
extension.equals(Utils.jpeg) ||
extension.equals(Utils.jpg) ||
extension.equals(Utils.png)) {
return true;
} else {
return false;
}
}
return false;
}
public String getDescription() {
return "Just Images";
}
}
該過濾器爲圖像文件過濾器。
Java Swing教程5-JTable
利用J2SE提供的JTable組件類可以很方便的實現應用程序中的表格功能,以實例闡述如下:
該實例運行結果如下:
其代碼如下:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Test01 {
public static void main(String[] args) {
//聲明列名數組
String[] columnNames = { "姓名", "性別", "年齡", "籍貫", "婚否" };
//聲明數據二維數組
Object[][] data = {
{ "趙剛", "男", new Integer(18), "北京", new Boolean(false) },
{ "錢霞", "女", new Integer(28), "北京", new Boolean(true) },
{ "孫大偉", "男", new Integer(32), "上海", new Boolean(false) },
{ "李民", "男", new Integer(30), "南京", new Boolean(true) },
{ "周麗麗", "女", new Integer(34),"重慶",new Boolean(false) } };
//創建JTable對象t
final JTable t = new JTable(data, columnNames);
//設置JTable對象的可視區,超出部分會用下面的滾動條來顯示
t.setPreferredScrollableViewportSize(new Dimension(400, 70));
//定義一個容器
JPanel p = new JPanel();
//在容器中加入表格和滾動條
p.add(t);
JScrollPane s = new JScrollPane(t);
p.add(s);
//設置容器爲透明的
p.setOpaque(true);
//以下代碼在前幾個Java Swing教程中已經講過,這裏不重複!
JFrame f = new JFrame("JTable測試!");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(p,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}