一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java圖形用戶界面之列表框

Java圖形用戶界面之列表框

2020-06-24 12:07極客小子 JAVA教程

列表框通過Swing組件JList產生,其總是在屏幕上占據固定行數的空間。這篇文章主要介紹了java圖形用戶界面之列表框的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下

列表框通過Swing組件JList產生,其總是在屏幕上占據固定行數的空間。如果要得到列表框中被選中的元素,只需調用getSelectedValuesList(),它可以產生一個字符串數組,內容為被選中的元素名稱。JList組件允許多重選擇;如果按住Ctrl鍵,可以選中所有點擊的元素;如果選中一個元素,按住Shift鍵并單擊另一個元素,那么這兩個元素之間的所有元素都被選中;要從選中的元素中去掉一個,按住Ctrl鍵單擊該元素即可。

初始化列表框后,接著便是向列表框添加和修改內容。分為靜態操作和動態操作。

1、靜態操作

靜態操作便是將所有元素同時添加到JList中,添加后不能修改,不能刪除,即在程序執行過程中不能操作列表框。

E.g.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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時將所有元素添加進去即可。

執行結果:列表框不可以被操作。

Java圖形用戶界面之列表框

2、動態操作

通過查看JList的方法,可以發現JList不負責列表框的動態操作,所有的動態操作的細節可以在“列表模型”即DefaultListModel中完成,只需將該列表模型加入JList即可。

?
1
2
3
4
DefaultListModel listmodel = new DefaultListModel();
listmodel.addElement(element1);//添加元素
listmodel.clear();//清除全部元素
listmodel.remove(int index);//清除指定位置的元素

E.g.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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);
}
}

執行結果:

Java圖形用戶界面之列表框

在上面的程序中,對JList的處理過程中用到了JList所支持的事件ListSelectionEvent的getValueIsAdjusting()方法以及JList的getSelectedValuesList()方法,需要注意這兩個方法的用法。

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

返回此事件是否是仍然在更改的多個不同事件之一,如果此事件是仍然在更改的多個不同事件之一,則返回 true。

例如,對于選擇被更新以響應一個用戶的拖動的事件,那么在拖動開始時,此屬性被設置為 true;在拖動結束時被設置為 false。在拖動期間,監聽器接收 valueIsAdjusting 屬性設置為 true 的事件。在拖動的最后,當更改終止時,監聽器接收一個值設置為 false 的事件。

如果將JList對象的注冊程序去掉更新檢測的語句:

?
1
2
if(e.getValueIsAdjusting())
return;

輸出為:

Java圖形用戶界面之列表框

可見,沒有了更新檢測,選中列表框元素后,有重復輸出。

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

JList對象調用getSelectedValuesList()方法,產生一個字符串數組,內容為被選中的元素名稱。

3、JList滾動條

JList本沒有對滾動提供直接的支持,我們只要將JList包裝進JScrollPane,它將自動幫助處理所有細節。

總結:JList想添加元素,可以執行將所有元素在JList初始化時加入的靜態操作,也可以利用“列表模型”DefaultListModel處理所有列表修改細節的動態操作。

注意:在JList元素選擇的過程中可能會用到更新檢測,從而確保程序的穩定性。

以上所述是小編給大家介紹的java圖形用戶界面之列表框,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/shiyiaccn/p/5978789.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人在线网址 | 欧美日韩一区二区三区在线观看 | 美女班主任下面好爽好湿好紧 | 波多野结衣在线中文 | 国产成人在线视频 | 四虎免费在线观看视频 | 国产 日韩 一区 | 日本加勒比无码av | 成人在线观看视频免费 | 国模娜娜一区二区三区 | www.片| 国产国语在线播放视频 | 91视频完整版 | 911精品国产亚洲日本美国韩国 | 四虎最新永久在线精品免费 | 欧美黑大吊 | 国产精品视频第一页 | 亚洲婷婷在线视频 | babes性欧美30| 国产大胆歌舞团网站 | 黄瓜视频黄版 | 欧美兽皇video | 亚洲精品tv久久久久久久久久 | 99在线资源 | 国内小情侣一二三区在线视频 | 久久久这里有精品999 | 亚洲人成在线播放 | 国产精品对白刺激久久久 | 欧美成人免费观看的 | 国产网站免费在线观看 | 公交车上插入 | 特黄视频免费看 | 成人精品亚洲人成在线 | 插得好爽 | 动漫jk美女被爆羞羞漫画 | 99国产高清久久久久久网站 | 成人福利免费视频 | 午夜福利体验免费体验区 | 九九热在线视频观看这里只有精品 | 无人区在线观看免费观看 | 午夜国产精品视频 |