程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java圖形用戶界面之列表框

Java圖形用戶界面之列表框

編輯:關於JAVA

Java圖形用戶界面之列表框。本站提示廣大學習愛好者:(Java圖形用戶界面之列表框)文章只能為提供參考,不一定能成為您想要的結果。以下是Java圖形用戶界面之列表框正文


列表框經由過程Swing組件JList發生,其老是在屏幕上占領固定行數的空間。假如要獲得列表框中被選中的元素,只需挪用getSelectedValuesList(),它可以發生一個字符串數組,內容為被選中的元素稱號。JList組件許可多重選擇;假如按住Ctrl鍵,可以選中一切點擊的元素;假如選中一個元素,按住Shift鍵並單擊另外一個元素,那末這兩個元素之間的一切元素都被選中;要從選中的元素中去失落一個,按住Ctrl鍵單擊該元素便可。

初始化列表框後,接著就是向列表框添加和修正內容。分為靜態操作和靜態操作。

1、靜態操作

靜態操作就是將一切元素同時添加到JList中,添加後不克不及修正,不克不及刪除,即在法式履行進程中不克不及操作列表框。

E.g.

package test;
import javax.swing.*;
import java.awt.*;
import static net.mindview.util.SwingConsole.*;
public class ListTest1 extends JFrame{
private String[] str = {"Monday","Tuesday","Wednesday","Thursday","Friday","Staturday","Sunday"};
private JList list;public ListTest1()
{
list = new JList(str);
setLayout(new FlowLayout());
add(list);
}
public static void main(String[] args)
{
run(new ListTest1(),200,100);
}
}

如上例,只需在初始化JList時將一切元素添加出來便可。

履行成果:列表框弗成以被操作。

2、靜態操作

經由過程檢查JList的辦法,可以發明JList不擔任列表框的靜態操作,一切的靜態操作的細節可以在“列表模子”即DefaultListModel中完成,只需將該列表模子參加JList便可。

DefaultListModel listmodel = new DefaultListModel();
listmodel.addElement(element1);//添加元素
listmodel.clear();//消除全體元素
listmodel.remove(int index);//消除指定地位的元素

E.g.

package test;
import java.awt.*;import java.awt.event.*;import static net.mindview.util.SwingConsole.*;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class ListTest extends JFrame{
private String[] str = {"Monday","Tuesday","Wednesday","Thursday","Friday","Staturday","Sunday"};
private JButton button1 = new JButton("Add Item"),
button2 = new JButton("Clear Item");
private JTextArea text = new JTextArea(str.length,20);
private DefaultListModel listmodel = new DefaultListModel();
private JList list = new JList(listmodel);
//將列表模子參加JList,列表模子擔任完成靜態操作,JList擔任創立列表和很多其它任務(如多重選擇)。
private int count = 0;
private boolean flag = false;
public ListTest()
{
text.setEditable(false);//只是用來顯示,不克不及編纂
for(int i = 0;i<4;i++)
{
listmodel.addElement(str[count++]);
}
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
if(count<str.length)
{
listmodel.addElement(str[count++]);
}else
{
button1.setEnabled(flag);
flag = true;
}
}
});
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
if(count<str.length)
{
count = 0;//列表從新開端添加元素
listmodel.clear();//列表元素消除
text.setText(null);
}else
{
count = 0;
listmodel.clear();
text.setText(null);
button1.setEnabled(flag);//啟動按鈕
}
}
});
list.addListSelectionListener(new ListSelectionListener(){
@SuppressWarnings("deprecation")
public void valueChanged(ListSelectionEvent e)
{
if(e.getValueIsAdjusting())
return;
//假如檢測到事宜在更改,則前往true,前面語句不履行;當更改停止後,則前往false,履行前面語句。 for(Object item : list.getSelectedValuesList())
{
text.append(item + "\n");//List型對象轉換為Object
}
//list挪用getSelectedValuesList()辦法,發生一個字符串數組,內容為被選中的元素稱號
}
});
setLayout(new FlowLayout());
Border border = BorderFactory.createMatteBorder(1, 1, 2, 2, Color.RED);//添加邊框
list.setBorder(border);//設置邊框
text.setBorder(border);
add(button1);
add(button2);
add(new JScrollPane(text));
add(list);
}
public static void main(String[] args) 
{
run(new ListTest(),250,375);
}
}

履行成果:

在下面的法式中,對JList的處置進程頂用到了JList所支撐的事宜ListSelectionEvent的getValueIsAdjusting()辦法和JList的getSelectedValuesList()辦法,須要留意這兩個辦法的用法。

(1)Boolean javax.swing.event.ListSelectionEvent.getValueIsAdjusting()

前往此事宜能否是依然在更改的多個分歧事宜之一,假如此事宜是依然在更改的多個分歧事宜之一,則前往 true。

例如,關於選擇被更新以呼應一個用戶的拖動的事宜,那末在拖動開端時,此屬性被設置為 true;在拖動停止時被設置為 false。在拖動時代,監聽器吸收 valueIsAdjusting 屬性設置為 true 的事宜。在拖動的最初,當更改終止時,監聽器吸收一個值設置為 false 的事宜。

假如將JList對象的注冊法式去失落更新檢測的語句:

if(e.getValueIsAdjusting())
return;

輸入為:

可見,沒有了更新檢測,選中列表框元素後,有反復輸入。

(2)List javax.swing.JList.getSelectedValuesList()

JList對象挪用getSelectedValuesList()辦法,發生一個字符串數組,內容為被選中的元素稱號。

3、JList轉動條

JList本沒有對轉動供給直接的支撐,我們只需將JList包裝進JScrollPane,它將主動贊助處置一切細節。

總結:JList想添加元素,可以履行將一切元素在JList初始化時參加的靜態操作,也能夠應用“列表模子”DefaultListModel處置一切列表修正細節的靜態操作。

留意:在JList元素選擇的進程中能夠會用到更新檢測,從而確保法式的穩固性。

以上所述是小編給年夜家引見的java圖形用戶界面之列表框,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved