JComboBox的下拉框向上

JComboBox的下拉框向上
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;
 }

  }

}


 

显示效果为:

JComboBox的下拉框向上_第1张图片

不过看图的效果jcb的输入框没有线条显示,看来得再改改,学习中。。。。。。。

你可能感兴趣的:(JComboBox的下拉框向上)