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

            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 就行了~~~  回復  更多評論
            

          主站蜘蛛池模板: 房山区| 黑山县| 贵定县| 镇坪县| 京山县| 犍为县| 延长县| 娄底市| 兴安县| 陆川县| 鹤壁市| 社旗县| 泰兴市| 保定市| 清远市| 修武县| 阿荣旗| 桂平市| 故城县| 河源市| 绍兴市| 锦屏县| 灵石县| 天峨县| 奎屯市| 上饶县| 内江市| 凤山市| 巴彦县| 潜山县| 云阳县| 石阡县| 措勤县| 丹寨县| 中西区| 广州市| 临清市| 海伦市| 连云港市| 吉林省| 准格尔旗|