最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java圖形用戶(hù)界面之列表框

 更新時(shí)間:2016年10月20日 08:57:41   作者:極客小子  
列表框通過(guò)Swing組件JList產(chǎn)生,其總是在屏幕上占據(jù)固定行數(shù)的空間。這篇文章主要介紹了java圖形用戶(hù)界面之列表框的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下

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

初始化列表框后,接著便是向列表框添加和修改內(nèi)容。分為靜態(tài)操作和動(dòng)態(tài)操作。

1、靜態(tài)操作

靜態(tài)操作便是將所有元素同時(shí)添加到JList中,添加后不能修改,不能刪除,即在程序執(zhí)行過(guò)程中不能操作列表框。

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時(shí)將所有元素添加進(jìn)去即可。

執(zhí)行結(jié)果:列表框不可以被操作。

2、動(dòng)態(tài)操作

通過(guò)查看JList的方法,可以發(fā)現(xiàn)JList不負(fù)責(zé)列表框的動(dòng)態(tài)操作,所有的動(dòng)態(tài)操作的細(xì)節(jié)可以在“列表模型”即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,列表模型負(fù)責(zé)完成動(dòng)態(tài)操作,JList負(fù)責(zé)創(chuàng)建列表以及許多其它工作(如多重選擇)。
private int count = 0;
private boolean flag = false;
public ListTest()
{
text.setEditable(false);//只是用來(lái)顯示,不能編輯
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;//列表重新開(kāi)始添加元素
listmodel.clear();//列表元素清除
text.setText(null);
}else
{
count = 0;
listmodel.clear();
text.setText(null);
button1.setEnabled(flag);//啟動(dòng)按鈕
}
}
});
list.addListSelectionListener(new ListSelectionListener(){
@SuppressWarnings("deprecation")
public void valueChanged(ListSelectionEvent e)
{
if(e.getValueIsAdjusting())
return;
//如果檢測(cè)到事件在更改,則返回true,后面語(yǔ)句不執(zhí)行;當(dāng)更改結(jié)束后,則返回false,執(zhí)行后面語(yǔ)句。 for(Object item : list.getSelectedValuesList())
{
text.append(item + "\n");//List型對(duì)象轉(zhuǎn)換為Object
}
//list調(diào)用getSelectedValuesList()方法,產(chǎn)生一個(gè)字符串?dāng)?shù)組,內(nèi)容為被選中的元素名稱(chēng)
}
});
setLayout(new FlowLayout());
Border border = BorderFactory.createMatteBorder(1, 1, 2, 2, Color.RED);//添加邊框
list.setBorder(border);//設(shè)置邊框
text.setBorder(border);
add(button1);
add(button2);
add(new JScrollPane(text));
add(list);
}
public static void main(String[] args) 
{
run(new ListTest(),250,375);
}
}

執(zhí)行結(jié)果:

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

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

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

例如,對(duì)于選擇被更新以響應(yīng)一個(gè)用戶(hù)的拖動(dòng)的事件,那么在拖動(dòng)開(kāi)始時(shí),此屬性被設(shè)置為 true;在拖動(dòng)結(jié)束時(shí)被設(shè)置為 false。在拖動(dòng)期間,監(jiān)聽(tīng)器接收 valueIsAdjusting 屬性設(shè)置為 true 的事件。在拖動(dòng)的最后,當(dāng)更改終止時(shí),監(jiān)聽(tīng)器接收一個(gè)值設(shè)置為 false 的事件。

如果將JList對(duì)象的注冊(cè)程序去掉更新檢測(cè)的語(yǔ)句:

if(e.getValueIsAdjusting())
return;

輸出為:

可見(jiàn),沒(méi)有了更新檢測(cè),選中列表框元素后,有重復(fù)輸出。

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

JList對(duì)象調(diào)用getSelectedValuesList()方法,產(chǎn)生一個(gè)字符串?dāng)?shù)組,內(nèi)容為被選中的元素名稱(chēng)。

3、JList滾動(dòng)條

JList本沒(méi)有對(duì)滾動(dòng)提供直接的支持,我們只要將JList包裝進(jìn)JScrollPane,它將自動(dòng)幫助處理所有細(xì)節(jié)。

總結(jié):JList想添加元素,可以執(zhí)行將所有元素在JList初始化時(shí)加入的靜態(tài)操作,也可以利用“列表模型”DefaultListModel處理所有列表修改細(xì)節(jié)的動(dòng)態(tài)操作。

注意:在JList元素選擇的過(guò)程中可能會(huì)用到更新檢測(cè),從而確保程序的穩(wěn)定性。

以上所述是小編給大家介紹的java圖形用戶(hù)界面之列表框,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java concurrency之共享鎖和ReentrantReadWriteLock_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之共享鎖和ReentrantReadWriteLock_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    本篇文章主要介紹了Java concurrency之共享鎖和ReentrantReadWriteLock,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-06-06
  • 解決使用IDEA時(shí)跳轉(zhuǎn)到.class的問(wèn)題

    解決使用IDEA時(shí)跳轉(zhuǎn)到.class的問(wèn)題

    這篇文章主要介紹了解決使用IDEA時(shí)跳轉(zhuǎn)到.class的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot整合mybatis常見(jiàn)問(wèn)題(小結(jié))

    SpringBoot整合mybatis常見(jiàn)問(wèn)題(小結(jié))

    這篇文章主要介紹了SpringBoot整合mybatis常見(jiàn)問(wèn)題(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表

    SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表

    這篇文章主要介紹了SpringBoot3和ShardingSphere5框架實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • java實(shí)現(xiàn)超市庫(kù)存管理系統(tǒng)

    java實(shí)現(xiàn)超市庫(kù)存管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)超市庫(kù)存管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • SpringBoot 整合 RabbitMQ 的使用方式(代碼示例)

    SpringBoot 整合 RabbitMQ 的使用方式(代碼示例)

    本文詳細(xì)介紹了使用RabbitTemplate進(jìn)行消息傳遞的幾種模式,包括點(diǎn)對(duì)點(diǎn)通信、發(fā)布/訂閱模式、工作隊(duì)列模式、路由模式和主題模式,每種模式都通過(guò)代碼示例展示了生產(chǎn)者和消費(fèi)者的實(shí)現(xiàn),幫助開(kāi)發(fā)者理解和運(yùn)用RabbitMQ進(jìn)行高效的消息處理
    2024-10-10
  • SpringBoot中properties,yml,yaml的區(qū)別及使用說(shuō)明

    SpringBoot中properties,yml,yaml的區(qū)別及使用說(shuō)明

    這篇文章主要介紹了SpringBoot中properties,yml,yaml的區(qū)別及使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 基于SpringBoot和Leaflet的行政區(qū)劃地圖掩膜效果實(shí)戰(zhàn)教程

    基于SpringBoot和Leaflet的行政區(qū)劃地圖掩膜效果實(shí)戰(zhàn)教程

    本文講解的是一種圖層級(jí)的掩膜,即使用行政區(qū)劃圖層來(lái)進(jìn)行掩膜,使用場(chǎng)景為,用戶(hù)只需要在地圖頁(yè)面中展示目標(biāo)行政區(qū)劃內(nèi)的影像信息,對(duì)于行政邊界外的影像,這篇文章主要介紹了基于SpringBoot和Leaflet的行政區(qū)劃地圖掩膜效果實(shí)戰(zhàn),需要的朋友可以參考下
    2024-05-05
  • Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型

    Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之八大基本數(shù)據(jù)類(lèi)型的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 解決spring data redis的那些坑

    解決spring data redis的那些坑

    這篇文章主要介紹了spring data redis的那些坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論

山西省| 海安县| 犍为县| 安仁县| 柘城县| 连南| 永泰县| 新巴尔虎左旗| 滦平县| 武平县| 通州区| 丰县| 连平县| 灵山县| 西昌市| 会东县| 苏尼特左旗| 余干县| 肥东县| 江源县| 柳林县| 同江市| 天津市| 海晏县| 紫金县| 涞源县| 扶风县| 江门市| 鹿泉市| 九寨沟县| 十堰市| 丰城市| 邢台县| 天等县| 大新县| 凯里市| 莱州市| 贵德县| 类乌齐县| 鄢陵县| 高雄县|