1. 程式人生 > 實用技巧 >Java GUI快速入門

Java GUI快速入門

1.GUI的介紹

1.1GUI概述

  早期,電腦向用戶提供的是單調、枯燥、純字元狀態的“命令列介面(CLI)”。就是到現在,我們還可以依稀看到它們的身影:在Windows中開個DOS視窗,就可看到歷史的足跡。後來,Apple公司率先在電腦的作業系統中實現了圖形化的使用者介面(Graphical User Interface,簡稱GUI),但由於Apple公司封閉的市場策略,自己完成電腦硬體、作業系統、應用軟體一條龍的產品,與其它PC不相容。這使得Apple公司錯過了一次一統全球PC的好機會。
  後來,Microsoft公司推出了風靡全球的Windows作業系統,它憑藉著優秀的圖形化使用者介面,一舉奠定了作業系統標準的地位。這也造就了世界首富---比爾.蓋茨和IT業的泰山北斗微軟公司。


  在這圖形使用者介面風行於世的今天,一個應用軟體沒有良好的GUI是無法讓使用者接受的。而Java語言也深知這一點的重要性,它提供了一套可以輕鬆構建GUI的工具。在本章和下一章中,我們將向你充分證明這一點。

1.2Java提供了三個主要包做GUI開發:

java.awt 包 – 主要提供字型/佈局管理器

javax.swing 包[商業開發常用] – 主要提供各種元件(視窗/按鈕/文字框)

java.awt.event 包 – 事件處理,後臺功能的實現。

2.Swing元件

如圖所示:swing元件主要可分為三個部分,後面會詳細介紹

(1)頂層容器::常用有JFrame,JDialog

(2)中間容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel結尾。

(3)基本元件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。

2.1頂層容器介紹

#

元件

描述

1

JFrame

一個普通的視窗(絕大多數 Swing 圖形介面程式使用 JFrame 作為頂層容器)

2

JDialog

對話方塊

2.2中間容器

#

元件

描述

1

JPanel (相當於div)

一般輕量級面板容器元件(作為JFrame中間容器)

2

JScrollPane

帶滾動條的,可以水平和垂直滾動的面板元件

3

JSplitPane

分隔面板

4

JTabbedPane

選項卡面板

5

JLayeredPane

層級面板

2.3基本元件

#

元件

描述

1

JLabel

標籤

2

JButton

按鈕

3

JRadioButton

單選按鈕

4

JCheckBox

複選框

5

JToggleButton

開關按鈕

6

JTextField

文字框

7

JPasswordField

密碼框

8

JTextArea

文字區域

9

JComboBox

下拉列表框

10

JList

列表

11

JProgressBar

進度條

12

JSlider

滑塊

3.API介紹

3.1Jframe元件

JFrame frame = new JFrame("HelloWorldSwing");

// 建立及設定視窗

frame.setDefaultLookAndFeelDecorated(true);

// 確保一個漂亮的外觀風格

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

設定預設的關閉視窗

frame.pack();

// 顯示視窗

frame.setVisible(true);

//這個最好放在最後,不然會出現檢視看不到的情況

frame.setBounds(600, 300, 500, 400);

設定視窗的x,y位置,視窗大小x,y.

frame.add(panel)

新增panel面板到容器

frmIpa.getContentPane().add(panel, BorderLayout.NORTH);

新增面板到主視窗,佈局在北面

frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER);

新增可滾動面板到主視窗,佈局在中間

3.2Panel元件

Jpanel

JPanel panel = new JPanel();

建立面板容器

panel.add(button);

新增按鈕到面板

JOptionPane

JOptionPane.showMessageDialog(panel3, "沒有選中任何檔案", "提示", JOptionPane.WARNING_MESSAGE);

彈出提示框到panel容器

JScrollPane

JScrollPane scrollPane = new JScrollPane();

建立可滾動面板

scrollPane.setViewportView(textArea);

設定面板內容

3.3功能元件

JLabel

JLabel label = new JLabel("Hello World");

新增標籤

Jbutton

JButton button = new JButton("選擇檔案");

建立按鈕

button.addActionListener(new ActionListener() {}

新增操作按鈕後的事件監聽器

JFileChooser

jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );

// 設定檔案對話方塊

jfc.showSaveDialog(frmIpa);

// 顯示開啟的檔案對話方塊

jfc.getSelectedFile();

// 獲取選擇器選擇的檔案

JTextArea

JTextArea textArea = new JTextArea();

建立文字區域

textArea.setText(content);

設定內容

4.案例程式碼

4.1UI介紹

主視窗Jframe,

Jframe新增2個Jpanel面板,

北面Jpanel新增JButton,JButton開啟JFileChooser檔案對話方塊。

中間JScrollPane新增JTextArea文字區域,文字區域按各自業務邏輯來處理。

4.2程式碼

 1 import java.awt.BorderLayout;
 2 import java.awt.event.ActionEvent;
 3 import java.awt.event.ActionListener;
 4 import java.io.File;
 5 import javax.swing.JButton;
 6 import javax.swing.JFileChooser;
 7 import javax.swing.JFrame;
 8 import javax.swing.JOptionPane;
 9 import javax.swing.JPanel;
10 import javax.swing.JScrollPane;
11 import javax.swing.JTextArea;
12  
13 public class IpaUI {
14     public static JFrame frmIpa;
15     public JTextArea textArea;
16  
17     public IpaUI() {
18         // 視窗框架
19         frmIpa = new JFrame();
20         frmIpa.setTitle("ipa工具類");
21         frmIpa.setBounds(600, 300, 500, 400);
22         frmIpa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23  
24         // 面板1
25         JPanel panel = new JPanel();
26         frmIpa.getContentPane().add(panel, BorderLayout.NORTH);
27         JButton button = new JButton("選擇檔案");
28         // 監聽button的選擇路徑
29         button.addActionListener(new ActionListener() {
30             @Override
31             public void actionPerformed(ActionEvent e) {
32                 // 顯示開啟的檔案對話方塊
33                 JFileChooser jfc = new JFileChooser();
34                 jfc.showSaveDialog(frmIpa);
35                 try {
36                     // 使用檔案類獲取選擇器選擇的檔案
37                     File file = jfc.getSelectedFile();//
38                     //這裡是我的業務需求,各位不必照抄
39 //                    String content = IpaService.getIpaInfoMap(file.toString());
40 //                    textArea.setText(content);
41                 } catch (Exception e2) {
42                     JPanel panel3 = new JPanel();
43                     JOptionPane.showMessageDialog(panel3, "沒有選中任何檔案", "提示", JOptionPane.WARNING_MESSAGE);
44                 }
45             }
46         });
47         panel.add(button);
48  
49         // 可滾動面板
50         JScrollPane scrollPane = new JScrollPane();
51         frmIpa.getContentPane().add(scrollPane, BorderLayout.CENTER);
52         textArea = new JTextArea();
53         scrollPane.setViewportView(textArea);
54         //這個最好放在最後,否則會出現檢視問題。
55         frmIpa.setVisible(true);
56     }
57 }

5.外掛介紹WindowBuilder

總算騙大家看完文章,其實最方便的方法是用外掛製作,當然大家先了解完程式碼原理是最好的哈哈。eclispe安裝windowbuilder有兩種方式,一種是離線安裝,一種是線上安裝。

5.1搜尋WindowBuilder

找到http://www.eclipse.org/windowbuilder/download.php

根據自己的eclipse版本選擇,因為我的是4.8版本了,所以只能在線安裝。

5.2.在eclipse的中安裝

(1)選擇Help - Eclipse MarketPlace

(2) 在商店中搜索windowbuilder ,會出現WindowBuilder外掛

(3)一路下一步,進行安裝,等待安裝結束重啟eclipse即可。

5.3WindowBuilder外掛的使用

(1)在Eclipe選單中File - New -Other ,選中WindowBuilder - Swing Designer - JFrame。

(2)開啟檔案,點選左下角的Design進入檢視模式,左邊對應程式碼模式

左上是整個檢視結構,左下是單個結構的屬性,可以在這裡修改視窗的一些屬性,

中間是整個swing的介面按鈕,前面第二點介紹過的,這裡就不說了,

右邊就是檢視了,可以點選按鈕往視圖裡面新增,如下圖。