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

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

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

    TWaver - 專注UI技術

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

    控制TList的限量多選

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



         在實際項目中,我們經常需要對list進行不能超過限定數量的多重選擇控制。本文用到的技巧可能是本站最簡單的一次了:利用DataBox的SelectionModel,當選擇總數超過限定,就將最早的選擇刪除。
     
    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則變成了單選。
     
     通過這個思路,本文寫了一個很簡單的例子:通過控制多選數量,制作一個簡單的點菜選擇。相信你的系統中也經常會有類似的場景:通過list讓用戶選擇指定數量的數據。

     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點菜器");
    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("最多可以點"));
    24         optionPane.add(cbMax);
    25         optionPane.add(new JLabel("個菜。    "));
    26         optionPane.add(new JLabel("您點的菜:"));
    27         final JLabel lbOptions = new JLabel("          ");
    28         optionPane.add(lbOptions);
    29         JButton btnOption = new JButton("點菜");
    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[] { "您要吃點什么?注意:最多只能點" + max + "個菜哦!", scroll };
    75         int answer = JOptionPane.showConfirmDialog(this, message, "點菜", 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 


    評論

    # website design bangalore  回復  更多評論   

    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.

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲午夜精品在线| 亚洲AV福利天堂一区二区三 | 成人最新午夜免费视频| 亚洲综合视频在线| 成人久久免费网站| 久久精品国产亚洲麻豆| 四虎精品成人免费视频| 久久亚洲国产精品五月天婷| 国产三级在线免费观看| 国产亚洲精AA在线观看SEE| 韩国免费a级作爱片无码| 国产AV无码专区亚洲精品| 久久免费动漫品精老司机| 久久久久亚洲av无码专区导航| 亚洲人成在线中文字幕| 久久综合AV免费观看| 亚洲性色精品一区二区在线| 免费看国产一级特黄aa大片| 日韩在线视频免费| 亚洲国产精品无码久久一区二区 | 美女隐私免费视频看| 亚洲精品A在线观看| 热99RE久久精品这里都是精品免费 | aa午夜免费剧场| 亚洲av无码专区在线播放| 十八禁无码免费网站| 亚洲人妖女同在线播放| 免费中文字幕在线| a毛片在线看片免费| 亚洲专区中文字幕| 亚洲Av无码乱码在线播放| 免费国产黄网站在线观看| 亚洲日本在线电影| 亚洲中文字幕久久精品无码APP| 亚洲国产一区二区三区在线观看| 免费91最新地址永久入口 | 日本19禁啪啪无遮挡免费动图| 亚洲欧洲日产国码在线观看| 国产精品麻豆免费版| 丝袜捆绑调教视频免费区| 亚洲一级毛片免费看|