有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks
          csdn太慢啦,搬家至此。。。。
          最近學(xué)習(xí)SWING,改變JComboBox的的顯示方式,這里是將JComboBox的下拉框向上顯示,以下為詳細(xì)代碼:
           package kissJava.JComboBox;

          import java.awt.Dimension;
          import javax.swing.JButton;
          import javax.swing.JComboBox;
          import javax.swing.JComponent;
          import javax.swing.JFrame;
          import javax.swing.plaf.ComboBoxUI;
          import javax.swing.plaf.ComponentUI;
          import javax.swing.plaf.basic.BasicArrowButton;
          import javax.swing.plaf.basic.BasicComboBoxUI;
          import javax.swing.plaf.basic.BasicComboPopup;
          import javax.swing.plaf.basic.ComboPopup;

          public class PopupComboSample extends JFrame{
            String labels[] 
          = "Chardonnay""Sauvignon""Riesling""Cabernet",
                    
          "Zinfandel""Merlot""Pinot Noir""Sauvignon Blanc",
                    
          "Syrah""Gewurztraminer" }
          ;
            JComboBox jcb 
          = null;
           
          public PopupComboSample(){
            
          this.setTitle("下拉框向上");
             
          this.setLayout(null);
              jcb 
          = new JComboBox(labels);
              
          //setUI.......
              jcb.setUI((ComboBoxUI) MyComboBoxUI.createUI(jcb));
              jcb.setBounds(
          5015020020);
              
          this.add(jcb, null);
              setSize(
          300300);
              setVisible(
          true);
           }

           
            
          public static void main(String args[]) {
             
               
          new PopupComboSample();
             
            }


            
          static class MyComboBoxUI extends BasicComboBoxUI {
             
          int newsBarTitleWidth = 0;  
             
              
          public static ComponentUI createUI(JComponent c) {
                
          return new MyComboBoxUI();
              }

              
          //改變箭頭的方向
              protected JButton createArrowButton() {
                JButton button 
          = new BasicArrowButton(BasicArrowButton.NORTH);
                
          return button;
              }

              
          //改變comboBox的彈出方向
              protected ComboPopup createPopup() {
               BasicComboPopup popup 
          = new BasicComboPopup(comboBox){
                
          public void show() {
                   
          //大小按需要更改
                    Dimension popupSize = new Dimension(200 - newsBarTitleWidth - 517 * 5);
                    scroller.setMaximumSize(popupSize);
                    scroller.setPreferredSize(popupSize);
                    scroller.setMinimumSize(popupSize);
                    show(comboBox, newsBarTitleWidth, 
          -17 * 5);//getPopupHeightForRowCount(10));
              }

            }
          ;
            popup.getAccessibleContext().setAccessibleParent(comboBox);
            
          return popup;
           }

            }

          }


           

          顯示效果為:

          不過看圖的效果jcb的輸入框沒有線條顯示,看來得再改改,學(xué)習(xí)中。。。。。。。

          posted on 2008-03-05 11:21 kissjava 閱讀(1166) 評論(1)  編輯  收藏 所屬分類: swing

          評論

          # re: JComboBox的下拉框向上 2009-01-07 18:59 xx
          BasicComboBoxUI 換成 MetalComboBoxUI 就行了~~~  回復(fù)  更多評論
            

          主站蜘蛛池模板: 抚顺县| 南郑县| 博罗县| 巴塘县| 西青区| 扶沟县| 沧州市| 固镇县| 虞城县| 五大连池市| 固始县| 许昌市| 托里县| 仪陇县| 利津县| 阆中市| 丹巴县| 富民县| 黔西县| 偃师市| 文成县| 津南区| 浏阳市| 通化市| 乐亭县| 牟定县| 罗源县| 当雄县| 新疆| 马关县| 龙井市| 毕节市| 陵水| 成武县| 堆龙德庆县| 凤山县| 邵阳市| 西充县| 株洲县| 新宁县| 嵊泗县|