淺談Swing構造JList
構造JList類代表的Swing列表顯示一個可選取對象列表,它支持三種選取模式:單選取、單間隔選取和多間隔選取。
JList類把維護和繪制列表的工作委托給一個對象來完成。一個列表的模型維護一個對象列表,Swing列表單元繪制器將這些對象繪制在列表單元中。
缺省情況下,Swing列表單元繪制器是DefaultListCellRenderrer的實例,圖標和字符串按原樣顯示,而所有其他類型對象的繪制方式是:通過顯示從這些對象的toString返回的字符串來繪制這些對象。
構造JList方法
◆JList()構造一個使用空模型的 JList。
◆JList(ListModel dataModel),使其使用指定的非 null 模型顯示元素。
◆JList(Object[] listData),使其顯示指定數組中的元素。
◆JList(Vector> listData),使其顯示指定 Vector 中的元素。
常用方法
◆addListSelectionListener(ListSelectionListener listener)為每次選擇發生更改時要通知的列表添加偵聽器。
◆addSelectionInterval(int anchor, int lead)將選擇設置為指定間隔與當前選擇的并集。
◆createSelectionModel()返回 DefaultListSelectionModel 實例。
◆getCellRenderer()返回呈現列表項的對象。
◆getModel()返回保存由 JList 組件顯示的項列表的數據模型。
◆getSelectedIndex()返回所選的第一個索引;如果沒有選擇項,則返回 -1。
◆getSelectedValue()返回所選的第一個值,如果選擇為空,則返回 null。
◆getSelectionModel()返回當前選擇模型的值。
◆isSelectionEmpty()如果什么也沒有選擇,則返回 true。
◆setListData(Object[] listData)根據一個 object 數組構造 ListModel,然后對其應用 setModel。
◆setListData(Vector> listData)根據 Vector 構造 ListModel,然后對其應用 setModel。
◆setModel(ListModel model)設置表示列表內容或“值”的模型,并在通知 PropertyChangeListener 之后清除列表選擇。
◆setSelectedIndex(int index)選擇單個單元。
◆setSelectionMode(int selectionMode)確定允許單項選擇還是多項選擇。
◆setSelectionModel(ListSelectionModel selectionModel)將列表的 selectionModel 設置為非 null 的 ListSelectionModel 實現。
例:采用數組對象構造JList并設置JList背景顏色和邊框
- importjava.awt.BorderLayout;
- importjava.awt.Color;
- importjava.awt.Container;
- importjavax.swing.BorderFactory;
- importjavax.swing.JFrame;
- importjavax.swing.JList;
- importjavax.swing.JPanel;
- importjavax.swing.border.Border;
- publicclassJListBackgroundextendsJPanel{
- privatestaticfinalColorlightBlue=newColor(153,204,255);
- publicJListBackground(){
- super();
- setBackground(lightBlue);
- }
- publicstaticvoidaddComponentsToPane(Containerpane){
- String[]bruteForceCode={"intcount=0",
- "intm=mPattern.length();",
- "intn=mSource.length();",
- "outer:",
- "++count;",
- "}",
- "returncount;",
- "}"
- };
- JListlist=newJList(bruteForceCode);
- Borderetch=BorderFactory.createEtchedBorder();
- list.setBorder(BorderFactory.createTitledBorder(etch,"BruteForceCode"));
- JPanellistPanel=newJPanel();
- listPanel.add(list);
- listPanel.setBackground(lightBlue);
- list.setBackground(lightBlue);
- pane.add(listPanel,BorderLayout.CENTER);
- pane.setBackground(lightBlue);
- }
- publicstaticvoidmain(String[]args){
- JFrameframe=newJFrame("BruteForceAlgorithm");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- addComponentsToPane(frame.getContentPane());
- frame.pack();
- frame.setSize(800,600);
- frame.setVisible(true);
- }
- }
【編輯推薦】