1.標籤 (JLabel)php
標籤 (JLabel)一般是用來標識另一個組件的含義。以在標籤上顯示文字、圖象或是文字圖象的組合。html
JLabel labText=new JLabel(「文本標籤」);java
labText.setText("文本標籤");設計模式
2.密碼框 (JPasswordField)數組
密碼框其實是一種特殊類型的文本框,用戶能夠向其中輸入文本並加以編輯。和文本框不一樣的是,向密碼框中輸入文本時,顯示的不是實際輸入的文本,而是特殊的回顯字符(一般是'*')。可使用setEchoChar(char c)方法來改變缺省的回顯字符。app
須要注意的是,取得文本框中的文本時,使用方法getText(),該方法返回的是一個String類型的對象;而要取得密碼框中的文本,使用方法getPassword(),該方法返回的是一個char數組。框架
例如,建立了一個密碼框:ide
JPasswordField txtPwd=new JPasswrodField(20);函數
設定該密碼框的回顯字符爲'#':工具
txtPwd.setEchoChar('#');
取得密碼框中的內容:
char []pwd=txtPwd.getPassword();
也能夠方便地將char數組轉化爲String類型的對象:
String pwdStr=new String(txtP.getPassword());
3.菜單
(1)菜單也是一種經常使用的GUI組件,菜單採用的是一種層次結構,最頂層是菜單欄(JMenuBar);在菜單欄中能夠添加若干個菜單(JMenu),每一個菜單中又能夠添加若干個菜單選項(JMenuItem)、分隔線(Separator)或是菜單(稱之爲子菜單)。
(2)構建應用程序的菜單時,先建立一個菜單欄:
JMemuBar menuBar=new JMenuBar();
一般使用框架的setJMenuBar(JMenuBar aMenuBar)方法將菜單欄置於框架中:
frame.setJMenuBar(menuBar);
隨後,建立所須要的各菜單並逐個添加到菜單欄中,例如:
JMenu menuDBAccount=new JMenu("電錶出賬(C)");
...
menuBar.add(menuDBAccount);
最後,向各個菜單中添加菜單選項、分隔線或是子菜單,如圖所示的系統設置菜單爲例:
//建立菜單選項或是子菜單
JMenuItem sysConfigItem=new JMenuItem("參數設置(S)...");
JMenu viewMenu=new JMenu("外觀設置");
JRadioButtonMenuItem metalItem=new JRadioButtonMenuItem("金屬外觀");
JRadioButtonMenuItem classicItem=new JRadioButtonMenuItem("傳統外觀");
JRadioButtonMenuItem modernItem=new JRadioButtonMenuItem("現代外觀");
JMenuItem cascadeItem=new JMenuItem("層疊窗口(C)");
JMenuItem iconifyItem=new JMenuItem("排列圖標(I)");
//將三個單選按鈕添加到一個按鈕組
ButtonGroup group=new ButtonGroup();
group.add(metalItem);
group.add(classicItem);
group.add(modernItem);
//構建子菜單
viewMenu.add(metalItem);
viewMenu.add(classicItem);
viewMenu.add(modernItem);
//添加到系統設置菜單
menuSysConfig.add(sysConfigItem); //添加菜單選項
menuSysConfig.add(viewMenu); //添加子菜單
menuSysConfig.add(cascadeItem); //添加菜單選項
menuSysConfig.addSeaparator(); //添加分隔線
menuSysConfig.add(iconifyItem); //添加菜單選項
(3)一般的菜單選項是JMenuItem,也可使用複選框或是單選按鈕類型的菜單選項,分別是JCheckBoxMenuItem和JRadioButtonMenuItem。和JRadioButton同樣,使用JRadioButtonMenuItem時,須要將它們添加到同一個按鈕組中。
(4)當點擊一個菜單選項時,會生成一個動做事件(ActionEvent) 。爲菜單選項添加事件偵聽器就能夠偵聽其動做事件,例如:sysConfigItem.addActionListener(aListener);
(5)爲一個菜單或是菜單選項設置快捷鍵:
menuSysConfig.setMnemonic('X');
sysConfigItem.setMnemonic('S');
4.工具條
(1)有些菜單選項的使用頻率較高,每次使用都要打開菜單,效率較低。爲此,能夠在工具條(JToolBar)中提供與這些菜單選項相對應快捷按鈕,以提升用戶的效率。工具條中一般是一些帶有圖標的按鈕,固然也能夠是其它類型的GUI組件,例如組合框等等。
(2)一般,工具條所提供的操做是菜單所能提供操做的一個子集,目的是可以快速訪問那些使用頻率高的操做。
(3)工具條一般被置於佈局爲BorderLayout的容器中。工具條被置於佈局爲BorderLayout的一個面板中。工具條還有一個特色:能夠被拖動到所在容器其它邊界,甚至脫離其所在的容器。
(4)生成一個工具條對象,可使用語句:
JToolBar toolbar=new JToolBar();
(5)還能夠在生成工具條時,指明工具條的標題。這樣,當工具條脫離所在容器時,能夠在本身的標題欄顯示標題:
JToolBar toolbar=new JToolBar("顏色工具條");
(6)向工具條中添加組件,使用add方法:
toolbar.add(btnBlue);
toolbar.add(btnYellow);
(7)缺省狀況下,組件是按照水平方式逐個添加入工具條的,也能夠在生成工具條時指明以垂直方式來添加組件:
JToolBar toolbar=new JToolBar(SwingConstants.VERTICAL);
(8)若是但願工具條不能移動,可使用setFloatable方法來設置:
toolbar.setFloatable(false);
(9)當工具條中的按鈕上只顯示圖標時,用戶可能不能確切知道各個按鈕的具體含義。可使用工具提示解決這個問題:
btnYellow.setToolTipText("面板置爲黃色");
5.對話框
(1)對話框是用戶和應用程序進行交互(對話)的一個橋樑:對話框能夠用於收集用戶的輸入數據傳遞給應用程序,或是顯示應用程序的運行信息給用戶。
(2)對話框分爲模式(modal)和非模式兩種。模式對話框處於可見狀態時,用戶將不能與應用程序的其它窗口進行交互,而非模式對話框則沒有此限制。
(3)Java中提供了一個類JOptionPane用於建立簡單的模式對話框,若是但願建立非模式對話框或是自定義對話框可使用JDialog。
(4)JOptionPane類中提供了4種靜態方法,用以顯示4種經常使用的對話框:
showMessageDialog 消息對話框
showInputDialog 輸入對話框
showConfirmDialog 確認對話框
showOptionDialog 選項對話框
(5)JOptionPane 對話框主要由以下幾個部分構成:圖標、消息以及按鈕。
(6)類JOptionPane中定義了以下五個常量:
JOptionPane.QUESTION_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.WARNING_MESSAGE
JOptionPane.ERROR_MESSAGE
JOptionPane.PLAIN_MESSAGE //不使用圖標
前四個常量對應着四個圖標,第五個常量表示不使用圖標。開發人員可使用這些常量來指定對話框中顯示的圖標。固然,對話框也提供了方法使得開發人員可使用本身的圖標。
(7)JOptionPane對話框不只僅能夠顯示字符串類型的消息,還能夠顯示其它類型的消息。例如,能夠是一副圖片、還能夠是一個GUI組件。更普遍地說,這裏的消息能夠是任何類型的對象或是對象數組。在書上的例子中,你能夠看到不一樣類型消息的應用。
(8)JOptionPane對話框底部的按鈕取決於對話框類型和選項類型。例如,對於確認對話框,可使用以下的四種選項類型之一:
DEFAULT_ OPTION
YES_NO_OPTION
YES_NO_CANCEL_OPTION
OK_CANCEL_OPTION
6.表格
(1)表格(JTable)也是一種經常使用的GUI組件,經常使用來顯示大量的數據。
(2)表格是模型-視圖-控制器設計模式的一個典型應用。表格自己並不存儲所顯示的數據,數據其實是存儲在表模型中的,表格只是表模型的一種視圖.
(3)JTable提供了以下兩種構建器,能夠方便地建立簡單表格:
JTable(Object[][] data, Object[] columnNames)
JTable(Vector data, Vector columnNames)
(4)採用上述方法能夠發現存在很多缺點:例如,每一列的寬度都是同樣的;未能正確顯示日期;數值未能按照咱們的但願保留到小數點後面兩位,並靠右顯示;表格中的數據必須預先存放在一個數組中或是向量(Vector)中等等。在一個真正的應用程序中,使用這樣的表格是不能知足實際應用的要求的。
(5)在缺省狀況下,表格中每列是等寬的,而且調整某列的寬度時,其它列的寬度也會相應自動調整。可使用下面的語句關閉列寬自動調整特性:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
以後,要設定某列的寬度,首先依據該列的列名取得列對象,以設定第一列寬度爲例:
TableColumn col=table.getColumn(columnNames[0]);
而後調用setPreferredWidth方法設定該列寬度:
col.setPreferredWidth(200);
(6)前面已經提到,表格有一個對應的表模型,數據是存儲在表模型中,表格是表模型的視圖。表格在創建視圖時總須要自動調用表模型中的一些方法,這些方法的返回值決定了最終的視圖。部分常須要用到的方法的名稱和含義以下:
public int getRowCount();//取得行數
public int getColumnCount();//取得列數
public Object getValueAt(int row, int column); //取得指定單元格的數據
//指定單元格是否容許編輯
public boolean isCellEditable(int row, int column);
public String getColumnName(int column); //取得指定列的列名
public Class getColumnClass(int column);
缺省表模型DefaultTableModel提供了上述方法的缺省實現。例如,DefaultTableModel中的isCellEditable方法老是返回true,表示全部的單元格都容許編輯; getColumnClass方法老是返回Object.class.
(7)可使用DefaultTableModel建立一個表模型對象,而後再使用表模型建立表格,例如:
DefaultTableModel model=new DefaultTableModel(0,5);//0行5列的表模型
JTable table=new JTable(model);
而後,可使用model的addRow、removeRow方法向表模型中添加或是刪除數據,對錶模型增刪數據的結果會自動反映到表格視圖上來。
可是,一般狀況下,咱們並不直接使用DefaultTableModel。更多的情形是繼承DefaultTableModel類,並覆蓋其中部分方法以達到特殊的要求.
7.JScrollbar 滾動條
(1)構造函數
mySlider = new JScrollbar(JScrollbar.HORIZONTAL ,
0 , 1 , 0 , Integer.MAX_VALUE);
滾動條方向
滑塊初始位置
滑塊尺寸
滾動槽最小值
滾動槽最大值
(2)方法
int getValue() 返回滑塊當前位置
setUnitIncrement(1); 設置單位增量(點按兩端箭頭)
setBlockIncrement(50); 設置塊增量(點按滾動槽)