<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)航:
     
    主站蜘蛛池模板: 亚洲人成电影福利在线播放 | 99爱免费观看视频在线| 久久久久亚洲国产AV麻豆| 蜜芽亚洲av无码精品色午夜| 亚洲精品成a人在线观看| A级毛片内射免费视频| 最近中文字幕完整免费视频ww| 韩国免费a级作爱片无码| 噜噜综合亚洲AV中文无码| 亚洲 日韩经典 中文字幕| 久久精品国产精品亚洲毛片| 伊人久久精品亚洲午夜| 亚洲AⅤ优女AV综合久久久| 色播精品免费小视频| 少妇性饥渴无码A区免费| 无忧传媒视频免费观看入口| 亚洲av无码成人精品国产| 中文字幕亚洲情99在线| 亚洲熟妇色自偷自拍另类| 亚洲国产人成在线观看69网站| 国产午夜亚洲不卡| 国产精品亚洲αv天堂无码| 亚洲精品tv久久久久| 亚洲日韩中文在线精品第一| 免费在线观看日韩| 亚洲A∨午夜成人片精品网站| 免费特级黄毛片在线成人观看| 最近免费中文字幕大全视频| 日韩免费精品视频| 18勿入网站免费永久| 免费观看激色视频网站(性色) | 亚洲国产精品一区二区久久hs| 91麻豆国产自产在线观看亚洲 | 老司机午夜性生免费福利 | 四虎影院免费视频| 午夜dj在线观看免费视频| 青青草国产免费久久久91| 国产成人无码区免费A∨视频网站| 国产成人无码a区在线观看视频免费| 国产一区二区三区在线免费观看| 国产jizzjizz免费看jizz|