<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術(shù)

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    控制TList的限量多選

    Posted on 2012-05-30 09:55 TWaver 閱讀(1400) 評(píng)論(1)  編輯  收藏
          大家知道TWaver Java總的TList繼承自Swing的JList,所以我們可以很容易控制其選擇,例如單選、多選等。但是本文介紹如何控制按指定數(shù)量進(jìn)行選擇。
          人生就是一個(gè)不停選擇的過(guò)程。所以,我們必須要謹(jǐn)慎地控制好你的選擇,無(wú)論是TList的SelectionModel,還是人生之路。 



         在實(shí)際項(xiàng)目中,我們經(jīng)常需要對(duì)list進(jìn)行不能超過(guò)限定數(shù)量的多重選擇控制。本文用到的技巧可能是本站最簡(jiǎn)單的一次了:利用DataBox的SelectionModel,當(dāng)選擇總數(shù)超過(guò)限定,就將最早的選擇刪除。
     
    1 box.getSelectionModel().addDataBoxSelectionListener(new DataBoxSelectionListener() {
    2     @Override
    3     public void selectionChanged(DataBoxSelectionEvent e) {
    4         if (e.getBoxSelectionModel().size() > max)
    5             e.getBoxSelectionModel().firstElement().setSelected(false);
    6         }
    7     }
    8 });

         其中max我們可以指定。如果max=1則變成了單選。
     
     通過(guò)這個(gè)思路,本文寫了一個(gè)很簡(jiǎn)單的例子:通過(guò)控制多選數(shù)量,制作一個(gè)簡(jiǎn)單的點(diǎn)菜選擇。相信你的系統(tǒng)中也經(jīng)常會(huì)有類似的場(chǎng)景:通過(guò)list讓用戶選擇指定數(shù)量的數(shù)據(jù)。

     1package bb.app.leather;
     2 
     3 import java.awt.*;
     4 import java.awt.event.*;
     5 import java.util.*;
     6 
     7 import javax.swing.*;
     8 
     9 import twaver.*;
    10 import twaver.list.*;
    11 
    12 public class TestFrame extends JFrame {
    13     public TestFrame() {
    14         this.setTitle("TWaver點(diǎn)菜器");
    15         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    16         this.setSize(700, 350);
    17         TWaverUtil.centerWindow(this);
    18         JPanel optionPane = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 120));
    19         final JComboBox cbMax = new JComboBox();
    20         for (int i = 1; i < 6; i++) {
    21             cbMax.addItem(i);
    22         }
    23         optionPane.add(new JLabel("最多可以點(diǎn)"));
    24         optionPane.add(cbMax);
    25         optionPane.add(new JLabel("個(gè)菜。    "));
    26         optionPane.add(new JLabel("您點(diǎn)的菜:"));
    27         final JLabel lbOptions = new JLabel("          ");
    28         optionPane.add(lbOptions);
    29         JButton btnOption = new JButton("點(diǎn)菜");
    30         optionPane.add(btnOption);
    31         btnOption.addActionListener(new ActionListener() {
    32             @Override
    33             public void actionPerformed(ActionEvent arg0) {
    34                 ArrayList<String> options = pickOption((Integer) cbMax.getSelectedItem());
    35                 String text = "";
    36                 for (String option : options) {
    37                     text += option + "  ";
    38                 }
    39                 lbOptions.setText(text);
    40             }
    41         });
    42         this.getContentPane().add(optionPane, BorderLayout.CENTER);
    43     }
    44 
    45     private ArrayList<String> pickOption(final int max) {
    46         String[] options = {
    47                 "回鍋肉",
    48                 "宮保雞丁",
    49                 "京醬肉絲",
    50                 "紅燒雞雜",
    51                 "紅燒大腸",
    52                 "青椒炒蛋",
    53                 "西紅柿炒蛋",
    54         };
    55 
    56         TDataBox box = new TDataBox();
    57         for (String option : options) {
    58             ResizableNode node = new ResizableNode();
    59             node.setName(option);
    60             box.addElement(node);
    61         }
    62         box.getSelectionModel().addDataBoxSelectionListener(new DataBoxSelectionListener() {
    63             @Override
    64             public void selectionChanged(DataBoxSelectionEvent e) {
    65                 if (e.getBoxSelectionModel().size() > max) {
    66                     e.getBoxSelectionModel().firstElement().setSelected(false);
    67                 }
    68             }
    69         });
    70         TList list = new TList(box);
    71         list.setTListSelectionMode(TList.CHECK_SELECTION);
    72         list.setIconVisible(false);
    73         JScrollPane scroll = new JScrollPane(list);
    74         Object[] message = new Object[] { "您要吃點(diǎn)什么?注意:最多只能點(diǎn)" + max + "個(gè)菜哦!", scroll };
    75         int answer = JOptionPane.showConfirmDialog(this, message, "點(diǎn)菜", JOptionPane.OK_CANCEL_OPTION);
    76         ArrayList<String> result = new ArrayList<String>();
    77         if (answer == JOptionPane.OK_OPTION) {
    78             Iterator it = box.getSelectionModel().selection();
    79             while (it.hasNext()) {
    80                result.add(((Element) it.next()).getName());
    81             }
    82         }
    83         return result;
    84     }
    85 
    86     public static void main(String[] args) throws Exception {
    87         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    88         TestFrame ui = new TestFrame();
    89         ui.setVisible(true);
    90     }
    91 }
    92 


    評(píng)論

    # website design bangalore  回復(fù)  更多評(píng)論   

    2013-02-05 16:35 by web design bangalore
    I have to say about this is very interesting, it seems that many people like it.Okay, I will recommend my friends to have a look, look forward to the new content.

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 红杏亚洲影院一区二区三区| 香蕉视频在线观看免费国产婷婷| 亚洲乱码日产精品a级毛片久久| 亚洲区日韩精品中文字幕| 综合在线免费视频| 亚洲一区二区三区免费观看| 五月亭亭免费高清在线| 91亚洲va在线天线va天堂va国产| 午夜视频免费在线观看| 精品日韩亚洲AV无码 | 一级一级毛片免费播放| 亚洲狠狠爱综合影院婷婷| 一级女性全黄久久生活片免费 | 嫩草影院免费观看| 午夜亚洲WWW湿好爽| 啊灬啊灬别停啊灬用力啊免费看| 曰批免费视频播放免费| 精品国产亚洲一区二区在线观看| 最近免费字幕中文大全| 亚洲综合在线观看视频| 久久不见久久见免费影院| 亚洲JLZZJLZZ少妇| 精品国产亚洲一区二区在线观看| 久久国产精品2020免费m3u8 | 亚洲男人的天堂在线| a毛片基地免费全部视频| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲精品视频免费观看| 国产一级片免费看| 亚洲人成在久久综合网站| 国产成人免费a在线视频色戒| 无人视频在线观看免费播放影院| 亚洲熟妇丰满多毛XXXX| 日本免费人成在线网站| 亚洲av乱码中文一区二区三区| 亚洲精品国精品久久99热| 三年片在线观看免费观看大全一| 日韩亚洲国产高清免费视频| 亚洲性在线看高清h片| 91精品导航在线网址免费| 亚洲av乱码中文一区二区三区|