成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java Swing編程:微調(diào)控制器和列表框

開發(fā) 后端
今天主要講下JSpinner和JList。JSpinner用的不多,一般都用滾動條來代替,但當值要精確時,用滾動條會經(jīng)常滾不到自己要的值,這也是很尷尬的,這時JSpinner就派上用場了。

今天主要講下JSpinner和JList。JSpinner用的不多,一般都用滾動條來代替,但當值要精確時,用滾動條會經(jīng)常滾不到自己要的值,這也是很尷尬的,這時JSpinner就派上用場了。

其實JSpinner沒什么花樣,主要構(gòu)造時要傳個SpinnerModel,這個類有3個子類

SpinnerNumberModel用于設(shè)置數(shù)值型的JSpinner

SpinnerDateModel用于實現(xiàn)時間控件的微調(diào)

SpinnerListModel用于傳入List或數(shù)組之間的微調(diào),eg

  1. public class TestJSpinner  
  2. {  
  3.     final int SPINNER_NUM = 6;  
  4.     JFrame mainWin = new JFrame("微調(diào)控制器示范");  
  5.     Box spinnerBox = new Box(BoxLayout.Y_AXIS);  
  6.     JSpinner[] spinners = new JSpinner[SPINNER_NUM];  
  7.     JLabel[] valLabels = new JLabel[SPINNER_NUM];  
  8.     JButton okBn = new JButton("確定");  
  9.     public void init()   
  10.     {  
  11.         for (int i = 0 ; i < SPINNER_NUM ; i++ )  
  12.         {  
  13.             valLabels[i] = new JLabel();  
  14.         }  
  15.         //-----------普通Spinner-----------  
  16.         spinners[0] = new JSpinner();  
  17.         addSpinner(spinners[0], "普通" , valLabels[0]);  
  18.  
  19.         //-----------指定最小值、最大值、步長的Spinner-----------  
  20.         //創(chuàng)建一個SpinnerNumberModel對象,指定最小值、最大值和步長  
  21.         SpinnerNumberModel numModel = new SpinnerNumberModel(3.4,   
  22.             -1.14.30.1);   
  23.         spinners[1] = new JSpinner(numModel);  
  24.         addSpinner(spinners[1], "數(shù) 值 范 圍" , valLabels[1]);  
  25.  
  26.         //-----------使用SpinnerListModel的Spinner------------  
  27.         String[] books = new String[]  
  28.         {  
  29.             "輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)",  
  30.             "Struts2權(quán)威指南",  
  31.             "基于J2EE的Ajax寶典" 
  32.         };  
  33.         //使用字符串數(shù)組創(chuàng)建SpinnerListModel對象  
  34.         SpinnerListModel bookModel = new SpinnerListModel(books);  
  35.         //使用SpinnerListModel對象創(chuàng)建JSpinner對象  
  36.         spinners[2] = new JSpinner(bookModel);  
  37.         addSpinner(spinners[2], "字符串序列值" , valLabels[2]);  
  38.  
  39.         //-----------使用序列值是ImageIcon的Spinner------------  
  40.         ArrayList<ImageIcon> icons = new ArrayList<ImageIcon>();  
  41.         icons.add(new ImageIcon("a.gif"));  
  42.         icons.add(new ImageIcon("b.gif"));  
  43.         //使用ImageIcon數(shù)組創(chuàng)建SpinnerListModel對象  
  44.         SpinnerListModel iconModel = new SpinnerListModel(icons);  
  45.         //使用SpinnerListModel對象創(chuàng)建JSpinner對象  
  46.         spinners[3] = new JSpinner(iconModel);  
  47.         addSpinner(spinners[3], "圖標序列值" , valLabels[3]);  
  48.  
  49.         //-----------使用SpinnerDateModel的Spinner------------  
  50.         //分別獲取起始時間、結(jié)束時間、初時時間  
  51.         Calendar cal = Calendar.getInstance();  
  52.         Date init = cal.getTime();  
  53.         cal.add(Calendar.DAY_OF_MONTH , -3);  
  54.         Date start = cal.getTime();  
  55.         cal.add(Calendar.DAY_OF_MONTH , 8);  
  56.         Date end = cal.getTime();  
  57.         //創(chuàng)建一個SpinnerDateModel對象,指定最小時間、最大時間和初始時間  
  58.         SpinnerDateModel dateModel = new SpinnerDateModel(init ,   
  59.             start , end , Calendar.HOUR_OF_DAY);  
  60.         //以SpinnerDateModel對象創(chuàng)建JSpinner  
  61.         spinners[4] = new JSpinner(dateModel);  
  62.         addSpinner(spinners[4], "時 間 范 圍" , valLabels[4]);  
  63.  
  64.         //-----------使用DateEditor來格式化Spinner------------  
  65.         dateModel = new SpinnerDateModel();  
  66.         spinners[5] = new JSpinner(dateModel);  
  67.         //創(chuàng)建一個JSpinner.DateEditor對象,用于對指定Spinner進行格式化  
  68.         JSpinner.DateEditor editor = new JSpinner.DateEditor(spinners[5],  
  69.             "公元yyyy年MM月dd日 HH時");  
  70.         //設(shè)置使用JSpinner.DateEditor對象進行格式化  
  71.         spinners[5].setEditor(editor);  
  72.         addSpinner(spinners[5], "使用DateEditor" , valLabels[5]);  
  73.         //為“確定”按鈕添加一個事件監(jiān)聽器  
  74.         okBn.addActionListener(new ActionListener()  
  75.         {  
  76.             public void actionPerformed(ActionEvent evt)  
  77.             {  
  78.                 //取出每個微調(diào)控制器的值,并將該值用后面的Label標簽顯示出來。  
  79.                 for (int i = 0 ; i < SPINNER_NUM ; i++)  
  80.                 {  
  81.                     valLabels[i].setText(spinners[i].getValue().toString());  
  82.                 }  
  83.             }  
  84.         });  
  85.  
  86.         JPanel bnPanel = new JPanel();  
  87.         bnPanel.add(okBn);  
  88.         mainWin.add(spinnerBox, BorderLayout.CENTER);  
  89.         mainWin.add(bnPanel, BorderLayout.SOUTH);  
  90.         mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  91.         mainWin.pack();  
  92.         mainWin.setVisible(true);  
  93.       
  94.     }  
  95.     //定義一個方法,用于將滑動條添加到容器中  
  96.     public void addSpinner(JSpinner spinner, String description  
  97.         ,JLabel valLabel)  
  98.     {  
  99.         Box box = new Box(BoxLayout.X_AXIS);  
  100.         JLabel desc = new JLabel(description + ":");  
  101.         desc.setPreferredSize(new Dimension(100 , 30));  
  102.         box.add(desc);  
  103.         box.add(spinner);  
  104.         valLabel.setPreferredSize(new Dimension(180 , 30));  
  105.         box.add(valLabel);  
  106.         spinnerBox.add(box);  
  107.     }  
  108.     public static void main(String[] args)  
  109.     {  
  110.         new TestJSpinner().init();  
  111.     }  

相比前面的Jspinner來說,JList和JComboBox就用的多些,eg

  1. public class TestList  
  2. {  
  3.     private JFrame mainWin = new JFrame("測試列表框");  
  4.     String[] books = new String[]  
  5.     {  
  6.         "Spring2.0寶典",  
  7.         "輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)",  
  8.         "基于J2EE的Ajax寶典",  
  9.         "Struts2權(quán)威指南",  
  10.         "ROR敏捷開發(fā)最佳實踐" 
  11.     };  
  12.     JList bookList = new JList(books);  
  13.     JComboBox bookSelector;  
  14.     //定義布局選擇按鈕所在的面板  
  15.     JPanel layoutPanel = new JPanel();  
  16.     ButtonGroup layoutGroup = new ButtonGroup();  
  17.     //定義選擇模式按鈕所在的面板  
  18.     JPanel selectModePanel = new JPanel();  
  19.     ButtonGroup selectModeGroup = new ButtonGroup();  
  20.     JTextArea favoriate = new JTextArea(4 , 40);  
  21.  
  22.     public void init()  
  23.     {  
  24.         //JList的可視高度可同時顯示三個列表項  
  25.         bookList.setVisibleRowCount(3);   
  26.         //默認選中第三項到第五項(第一項的索引是0)  
  27.         bookList.setSelectionInterval(24);  
  28.         addLayoutButton("縱向滾動", JList.VERTICAL);  
  29.         addLayoutButton("縱向換行", JList.VERTICAL_WRAP);  
  30.         addLayoutButton("橫向換行", JList.HORIZONTAL_WRAP);  
  31.         addSelectModelButton("無限制", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);  
  32.         addSelectModelButton("單選", ListSelectionModel.SINGLE_SELECTION);  
  33.         addSelectModelButton("單范圍", ListSelectionModel.SINGLE_INTERVAL_SELECTION);  
  34.         Box listBox = new Box(BoxLayout.Y_AXIS);  
  35.         //將JList組件放在JScrollPane中,再將該JScrollPane添加到listBox容器中  
  36.         listBox.add(new JScrollPane(bookList));  
  37.         //添加布局選擇按鈕面板、選擇模式按鈕面板  
  38.         listBox.add(layoutPanel);  
  39.         listBox.add(selectModePanel);  
  40.         //為JList添加事件監(jiān)聽器  
  41.         bookList.addListSelectionListener(new ListSelectionListener()  
  42.         {  
  43.             public void  valueChanged(ListSelectionEvent e)  
  44.             {  
  45.                 //獲取用戶所選擇的所有圖書  
  46.                 Object[] books = bookList.getSelectedValues();  
  47.                 favoriate.setText("");  
  48.                 for (Object book : books )  
  49.                 {  
  50.                     favoriate.append(book.toString() + "/n");  
  51.                 }  
  52.             }  
  53.         });  
  54.  
  55.         Vector<String> bookCollection = new Vector<String>();  
  56.         bookCollection.add("Spring2.0寶典");  
  57.         bookCollection.add("輕量級J2EE企業(yè)應(yīng)用實戰(zhàn)");  
  58.         bookCollection.add("基于J2EE的Ajax寶典");  
  59.         bookCollection.add("Struts2權(quán)威指南");  
  60.         bookCollection.add("ROR敏捷開發(fā)最佳實踐");  
  61.         //用一個Vector對象來創(chuàng)建一個JComboBox對象  
  62.         bookSelector = new JComboBox(bookCollection);  
  63.         //為JComboBox添加事件監(jiān)聽器  
  64.         bookSelector.addItemListener(new ItemListener()  
  65.         {  
  66.             public void itemStateChanged(ItemEvent e)   
  67.             {  
  68.                 //獲取JComboBox所選中的項  
  69.                 Object book = bookSelector.getSelectedItem();  
  70.                 favoriate.setText(book.toString());  
  71.             }  
  72.         });  
  73.           
  74.         //設(shè)置可以直接編輯  
  75.         bookSelector.setEditable(true);  
  76.         //設(shè)置下拉列表框的可視高度可同時顯示4個列表項  
  77.         bookSelector.setMaximumRowCount(4);  
  78.  
  79.  
  80.         JPanel p = new JPanel();  
  81.         p.add(bookSelector);  
  82.         Box box = new Box(BoxLayout.X_AXIS);  
  83.         box.add(listBox);  
  84.         box.add(p);  
  85.         mainWin.add(box);  
  86.         JPanel favoriatePanel = new JPanel();  
  87.         favoriatePanel.setLayout(new BorderLayout());  
  88.         favoriatePanel.add(new JScrollPane(favoriate));  
  89.         favoriatePanel.add(new JLabel("您喜歡的圖書:") , BorderLayout.NORTH);  
  90.         mainWin.add(favoriatePanel , BorderLayout.SOUTH);  
  91.  
  92.           
  93.         mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  94.         mainWin.pack();  
  95.         mainWin.setVisible(true);  
  96.     }  
  97.  
  98.     private void addLayoutButton(String label, final int orientation)  
  99.     {  
  100.         layoutPanel.setBorder(new TitledBorder(new EtchedBorder(), "確定選項布局"));  
  101.         JRadioButton button = new JRadioButton(label);  
  102.         //把該單選按鈕添加到layoutPanel面板中  
  103.         layoutPanel.add(button);  
  104.         //默認選中第一個按鈕  
  105.         if (layoutGroup.getButtonCount() == 0)   
  106.             button.setSelected(true);  
  107.         layoutGroup.add(button);  
  108.         button.addActionListener(new ActionListener()  
  109.         {  
  110.             public void actionPerformed(ActionEvent event)  
  111.             {  
  112.                 //改變列表框里列表項的布局方向  
  113.                 bookList.setLayoutOrientation(orientation);  
  114.             }  
  115.         });  
  116.     }  
  117.     private void addSelectModelButton(String label, final int selectModel)  
  118.     {  
  119.         selectModePanel.setBorder(new TitledBorder(new EtchedBorder(), "確定選擇模式"));  
  120.         JRadioButton button = new JRadioButton(label);  
  121.         //把該單選按鈕添加到selectModePanel面板中  
  122.         selectModePanel.add(button);  
  123.         //默認選中第一個按鈕  
  124.         if (selectModeGroup.getButtonCount() == 0)   
  125.             button.setSelected(true);  
  126.         selectModeGroup.add(button);  
  127.         button.addActionListener(new ActionListener()  
  128.         {  
  129.             public void actionPerformed(ActionEvent event)  
  130.             {  
  131.                 //改變列表框里的選擇模式  
  132.                 bookList.setSelectionMode(selectModel);  
  133.             }  
  134.         });  
  135.     }  
  136.  
  137.     public static void main(String[] args)   
  138.     {  
  139.         new TestList().init();  
  140.     }  

JList和JComboBox除了樣子上的區(qū)別,就是JComboBox只支持單選,而JList可以多選。

原文鏈接:http://blog.csdn.net/terryzero/article/details/3820172

【編輯推薦】

  1. Java Swing編程:進度條和滑動條
  2. Java Swing編程:Applet和JApplet
  3. Java Swing編程:拖放功能
  4. Java Swing編程:特殊容器
  5. Java Swing編程:基本組件
責任編輯:林師授 來源: terryzero的博客
相關(guān)推薦

2009-07-16 13:26:32

Swing增加

2010-01-26 09:27:47

Android列表框

2024-09-27 16:28:07

2015-02-02 09:37:42

SDN控制器

2012-01-17 13:53:16

JavaSwing

2009-01-12 11:16:58

控制器控制器行為行為結(jié)果

2011-07-14 10:28:54

額外域控制器

2023-11-19 18:46:04

智能控制器芯片

2015-08-07 15:28:46

選取城市控制器源碼

2023-08-13 18:31:45

SDN控制器

2011-07-13 09:00:59

域控制器Active Dire

2011-07-12 09:29:10

主域控制器備份域控制器

2012-01-17 13:41:34

JavaSwing

2012-01-17 14:05:29

JavaSwing

2012-01-17 14:09:54

JavaSwing

2012-01-17 13:46:55

JavaSwing

2012-01-17 13:58:17

JavaSwing

2013-11-18 10:32:37

SQL Server 資源調(diào)控器對IOPS控制

2013-12-19 09:32:01

SDN南向網(wǎng)絡(luò)控制

2011-07-18 13:55:08

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久久av | 日韩成人影院在线观看 | 国产最新精品视频 | 夜夜爽99久久国产综合精品女不卡 | 婷婷福利 | 自拍 亚洲 欧美 老师 丝袜 | 天天操天天射天天舔 | 欧洲精品一区 | 欧美日韩高清一区二区三区 | 一级a性色生活片久久毛片 一级特黄a大片 | www.蜜桃av| 极品销魂美女一区二区 | 精品久久久精品 | 亚洲精品久久久久久久久久久 | 国产成人99久久亚洲综合精品 | 日韩视频在线一区 | 蜜臀久久 | 超碰地址| 亚洲色在线视频 | 色婷婷久久久久swag精品 | 伊人国产精品 | 欧美精品在欧美一区二区少妇 | 欧美综合一区二区 | 97国产一区二区 | 成年人在线观看 | 色婷婷综合久久久中字幕精品久久 | 成人亚洲视频 | 成人av免费 | 国产精久久久久久久妇剪断 | 午夜久久久久久久久久一区二区 | 亚洲综合三区 | 久久91精品| 在线欧美 | 中文字幕第100页 | 一本色道久久综合亚洲精品高清 | 日本特黄a级高清免费大片 国产精品久久性 | 黄色精品| 91大神在线资源观看无广告 | 欧美a区 | 久久狠狠 | 中文字幕亚洲一区二区va在线 |