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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks
          csdn太慢啦,搬家至此。。。。
          最近學習SWING,改變JComboBox的的顯示方式,這里是將JComboBox的下拉框向上顯示,以下為詳細代碼:
           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的輸入框沒有線條顯示,看來得再改改,學習中。。。。。。。

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

          評論

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

          主站蜘蛛池模板: 彭山县| 嘉祥县| 巨鹿县| 岑巩县| 赤壁市| 威信县| 洛浦县| 渭南市| 久治县| 都兰县| 西乡县| 聊城市| 玉屏| 汕头市| 无锡市| 榆林市| 宁安市| 河北省| 寿光市| 措勤县| 磐石市| 永仁县| 嘉善县| 儋州市| 新和县| 武清区| 维西| 新营市| 珲春市| 昆明市| 洛浦县| 渭南市| 江油市| 邵东县| 商洛市| 平昌县| 嘉祥县| 乌拉特中旗| 达拉特旗| 二连浩特市| 玛曲县|