Java學習筆記之Swing(三)

Java學習筆記之Swing(三)

Swing中的經常使用控件

你將學到:數組

  • 瞭解如何建立文本框和文本框的實際應用;
  • 瞭解如何建立複選框和複選框的實際應用;
  • 瞭解如何建立單選按鈕和單選按鈕的實際應用;

文本框

文本框和按鈕同樣,都是很是經常使用的控件,文本框提供了一個輸 入信息的控件。框架

文本框是經過JTextField類來建立的,在建立的文本框中當文本超出文本框規定長度時,將自動滾動文本顯示。文本框是經過JTextField類的構造器建立的,包括5種構造器,如表所示。less

構造器 說明
public JTextFiled() 建立普通的文本框
public JTextFiled(String text) 建立右默認值的文本框
public JTextFiled(int columns) 建立指定長度的文本框
public JTextFiled(String text,int columns) 建立指定長度和指定文本內容的文本框
public JTextFiled(Documents doc,String text,int columens) 建立具備默認值,長度和文本內容的文本框

文本框也是會觸發事件的,它和按鈕同樣,都是觸發ActionEvent事件。按鈕是被單擊時觸發事件,而文本框是當用戶按下回車鍵時觸發事件。ide

多行文本框

當但願進行多行輸入時,文本框就不能知足其要求,這時候就須要建立多行文本框。多行文本框也是文本框的一種特殊形式,多行文本框是經過JTextArea類實現的。JTextArea類中提供了6種構 造器來建立多行文本框,構造器如表所示。佈局

構造器|說明
------|----
public TextArea()|建立沒有內容的多行文本框,默認的行數和列數爲0
public TextArea(String text)|建立指定內容的文本框,默認的行數和列數爲0
public TextArea(int row,int columns)|建立一個指定行和列的多行文本框
public TextArea(String text,int row,int columns)|建立指定行,列和文本內容的多行文本框
public TextArea(Documents doc)|建立具備文檔模型的多行文本框。默認的行和列爲0
public TextArea(Documents doc,String text,int row,int columns)|建立指定文本模型、文本內容、列和行的多行文本框

密碼框

密碼框是文本框的改進的控件,是一種專門用於輸入密碼的文本 框。在文本框中輸入信息後,將不直接顯示輸入的信息,而是使 用特定的特殊字符來進行顯示。密碼框是經過JPasswordField類 來建立的,由於密碼框和文本框的關係,因此JPasswordField類的構造器是和JTextField類的構造器相同的學習

複選框和單選按鈕

複選框和單選按鈕具備不少類似的地方,它們在實際開發中也經 常要使用到。例如須要用戶來選擇興趣愛好時,通常都不多是隻 有一個愛好的,這裏就能夠建立複選框來實現其功能,來讓用戶 進行多項選擇操做。可是例如性別等信息,是不可能存在多個選 擇的,它只能在有限的幾個選項中選擇其中一個,這裏就可使 用單選按鈕。ui

複選框

經過JRadioButton與ButtonGroup的配合使用,能夠很方便地實現 單項選擇。若須要使用多項選擇,則應該使用複選框——JCheckBox類。與JRadioButton的不一樣是,JCheckBox不須要編組 使用,各個選項之間沒有邏輯約束關係。 該類提供了8個構造器,表中列出了其中7個比較經常使用的。設計

構造器 說明
public JCheckBox() 建立沒有任何內容的複選框
public JCheckBox(Icon icon) 建立指定圖標的複選框
public JCkeckBox(Icon icon,boolean selected) 建立指定圖標以及是否被選中的複選框(若布爾值爲true則表示被選中)
public JCkeckBox(String text) 指定複選框的內容
public JCheckBox(String text,boolean selected) 建立指定文本以及是否被選中的複選框
public JCheckBox(String text,Icon icon) 建立指定文本和圖標的複選框
public JCkeckBox(String text,Icon icon,boolean selected) 建立指定文字、圖標以及肯定是否被選中的複選框
實例代碼:
public class JCheckBoxTest {
    private static void constructGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("JCheckBox Test");
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         //JCheckBox ac = new JCheckBox("A/C",true);使用複選框的兩個參數的構造器來簡化代碼
         JCheckBox ac = new JCheckBox("A/C");
         ac.setSelected(true);
        JCheckBox cdPlayer = new JCheckBox("CD Player");
        JCheckBox cruiseControl = new JCheckBox("Cruise Control");
        JCheckBox keylessEntry = new JCheckBox("Keyless Entry");
        JCheckBox antiTheft = new JCheckBox("Anti-Theft Alarm");
        JCheckBox centralLock = new JCheckBox("Central Lock");
        frame.add(new JLabel("Car Features"));
        frame.add(ac);
        frame.add(cdPlayer);
        frame.add(cruiseControl);
        frame.add(keylessEntry);
        frame.add(antiTheft);
        frame.add(centralLock);
        frame.pack();//pack()方法能夠將JFrame內容面板中的控件調整到適合的尺寸和佈局
        frame.setVisible(true);
    }
    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                constructGUI();
            }
        });
    }

}

若是咱們不想調用pack方法的話,咱們能夠調用JFrame的setSize和SetBounds方法。須要注意的是咱們須要在setVisible方法前調用這兩個方法。code

效果圖:對象

輸入圖片說明

單選按鈕

單選按鈕是一種只能在一組選項中選擇其中一個選項的控件。單選按鈕是經過使用JRadioButton類來建立的,在JRadioButton類 中具備7種構造器形式,構造器如表所示。

構造器|說明
  -----|----
  public JRadioButton()|建立沒有文字、圖標以及沒有被選中的按鈕
  public JRadioButton(Icon icon)|建立一個具備圖標的按鈕
  public JRadioButton(Icon icon,boolean selected)|建立指定圖標,以及肯定是否被選中的按鈕
  public JRadioButton(String text)|建立一個指定按鈕文字的按鈕
  public JRadioButton(String text,boolean selected)|建立指定文字以及肯定選中與否的按鈕
  public JRadioButton(String text,Icon icon)|建立有文字和圖標的按鈕
  public JRadioButton(String text,Icon icon,boolean selected)|建立指定文本、按鈕以及是否被選中的按鈕

實例代碼:

//建立三個單選按鈕
  	   	JRadioButton button1 = new JRadioButton("Red");
        JRadioButton button2 = new JRadioButton("Green");
        JRadioButton button3 = new JRadioButton("Blue");
        // 建立按鈕組
        ButtonGroup colorButtonGroup = new ButtonGroup();
        colorButtonGroup.add(button1);
        colorButtonGroup.add(button2);
        colorButtonGroup.add(button3);
        button1.setSelected(true); //設置默認狀況下按鈕1被選中
        frame.add(new JLabel("Color:"));
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.pack();
        frame.setVisible(true);

注意:當咱們建立多個單選按鈕時,若是咱們不將按鈕添加到按鈕組中,那麼多個按鈕就會出現同時被選中的狀況。

選項卡

選項卡也是開發GUI界面經常使用的控件之一,經過使用選項卡能夠在 同一個窗體中提供不少不一樣的界面,能夠經過選項卡提供的標籤 在界面間方便地進行切換。選項卡是經過JTabbedPane類建立的。

選項卡能夠產生多個標籤框架,每個標籤框架窗口自成一個系統,即 包含多個頁面,每一個頁面與一個標籤對應。當選擇某一個標籤時,標籤 框架窗口會自動顯示出此標籤框架的內容,並觸發一個ChangeEvent事件 ,這個事件由ChangeListener監聽器監聽並處理。

選項卡具備如下構造方法及經常使用方法:

  • public JTabbedPane()方法:該方法建立一個TabbedPane對象,該對象 具備默認的JTabbedPane.TOP選項卡布局;
  • public JTabbedPane(int tabPlacement)方法:該方法使用指定的參數tabPlacement建立一個TabbedPane對象,tabPlacement參數有常值, JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT或 JTabbedPane.RIGHT
  • public JTabbedPane(int tabPlacement, int tabLayoutPolicy)方法: 該方法以指定的參數tabPlacement、tabLayoutPolicy建立一個TabbedPane對象,該對象具備指定的tabPlacement選項卡布局和tabLayoutPolicy選項卡布局策略。其中參數tabLayoutPolicy有常值, JTabbedPane.WRAP_TAB_LAYOUT、JTabbedPane.SCROLL_TAB_LAYOUT

分割窗口

分割窗格(JSplitPane)也是Swing中經常使用的控件之一,其可以將單個空間分割成兩個部分,並在兩個部分中顯示不一樣的內容。

JSplitPane控件容許在單個空間中放置兩個控件,開發人員能夠 自由決定按水平方向或垂直方向劃分空間,還能夠在程序運行期 間使用鼠標自由調整空間的分割比例。經過JSplitPane控件的嵌 套使用,能夠將空間分割成更多的部分。JSplitPane類提供了5個構造器,如表所示。

滑塊和進度條

滑塊

JSlider類是Swing包中提供的用於實現滑塊的控件,經過JSlider控件可讓用戶在限定的範圍內方便地選擇須要的值。JSlider類 提供的滑塊能夠是水平方向的,也能夠是垂直方向的,而且能夠 根據須要設置成爲不一樣的外觀風格。

提示:滑塊組件是由能夠拖動的滑塊和一個範圍組件組成的;用 戶能夠經過拖動滑塊在一個區間範圍裏進行選擇。

進度條

ProgressBar是Swing中提供的用來實現進度條的控件,使用其能夠很是方便地完 成進度條的開發。在應用中恰當使用進度條能夠即時通告用戶系統的一些信息,避免用戶因不知道系統運行狀況而焦急地等待,從而使界面更加友好。 JProgressBar類提供了5個構造器,其中有4個是比較經常使用的,下表列出了這4個經常使用的構造器。

列表框

列表是圖形用戶界面程序中常 用到的組件,列表容許用戶從列表項中選擇一個或多個選項,默認狀況下,列表支持單選;選擇狀態由分隔符來區別。而且能夠經過JList中提供的setSelectionMode方法使得列表支持多選。

JList的經常使用構造方法以下所示:

  • public JList()方法:該方法能夠構造一個使用空模型的JList對 象。
  • public JList(Object[] listData)方法:該方法以顯示指定數組 中的元素構造一個JList。

注意:JList類沒有提供滾動功能,可是能夠經過將其放置在 JScrollPane中來實現滾動操做。

下拉列表框

下拉列表及組合框,下拉列表與列表不一樣的是,下拉列表只支持 單個選項,只容許用戶選擇一個選項。優勢是能節省空間,使界 面更緊湊。而且只有用戶單擊下拉列表時,列表選項纔會顯示。下拉列表框是經過JComboBox類來建立的,JComboBox控件實際上組合了一個文本框與一個下拉列表。

注意:在默認的狀況下,下拉列表是不能夠被用戶編輯的,可是可使用JComboBox提供的方法setEditable方法使其能夠被編輯 。

菜單

菜單(JMenu)是標題欄下面的一行文字部分。菜單是應用程序中最經常使用的組件。菜單的組織方式爲:一個菜單條JMenuBar包含多個菜單項(JMenuItem)。JMenuItem有兩個子類,分別爲JRadioButtonMenuItemJCheckBoxMenuItem用於表示單選菜單項和複選菜單項。當用戶選擇某個菜單項後,就會觸發一個ActionEvent事件,由ActionListener監聽器處理。

菜單項有兩種狀態:啓用狀態和禁用狀態,菜單項的狀態可使 用setEnabled()方法設置。建立完整的菜單通常須要如下幾步:

  1. 建立菜單欄;
  2. 建立菜單以及子菜單;
  3. 建立菜單項;
  4. 將菜單項添加到子菜單或菜單中,將子菜單加入到菜單中,將菜單加入到菜單欄。

實例代碼:

JMenuBar menuBar = new JMenuBar();//建立菜單欄
    JMenu fileMenu = new JMenu("File");
    JMenu editMenu = new JMenu("Edit");
    JMenu helpMenu = new JMenu("Help");
    //將菜單添加到菜單欄
    menuBar.add(fileMenu);
    menuBar.add(editMenu);
    menuBar.add(helpMenu);
    // 爲每個菜單建立子菜單
    JMenuItem fileNewMI = new JMenuItem("New");
    JMenuItem fileOpenMI = new JMenuItem("Open");
    JMenuItem fileSaveMI = new JMenuItem("Save");
    JMenuItem fileExitMI = new JMenuItem("Exit");
    // 將子菜單添加到菜單
    fileMenu.add(fileNewMI);
    //爲菜單添加事件監聽器
    fileNewMI.addActionListener(actionListener);
    fileMenu.add(fileOpenMI);
    fileOpenMI.addActionListener(actionListener);
    fileMenu.add(fileSaveMI);
    fileSaveMI.addActionListener(actionListener);
    fileMenu.addSeparator();
    fileMenu.add(fileExitMI);
    fileExitMI.addActionListener(actionListener);
    JMenuItem editCopyMI = new JMenuItem("Copy");
    JMenuItem editPasteMI = new JMenuItem("Paste");
    editMenu.add(editCopyMI);
    editMenu.add(editPasteMI);
    JMenuItem helpAboutMI = new JMenuItem("About");
    helpMenu.add(helpAboutMI);

運行效果:

輸入圖片說明

彈出式菜單

彈出式菜單有時也稱爲右鍵菜單,其通常在用戶按下鼠標右鍵時在鼠標位置彈出,可以給用戶的操做提供更大的方便。從某種程度上來講,右鍵菜單設計的好壞直接影響應用程序的易用性。彈出式菜單是經過JPopupMenu類來建立,經過該類提供的show方法將菜單顯示在指定的位置上。

注意:JPopupMenu類不是繼承JMenu類的而是從JComponent類繼承過來。彈出式菜單的建立和菜單的建立基本相同,也須要新建一個彈出式菜單後再加入菜單項。

相關文章
相關標籤/搜索