有才华的人,别忘记给滋润你的那块土壤施肥

  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 阅读(1155) 评论(1)  编辑  收藏 所属分类: swing

评论

# re: JComboBox的下拉框向上 2009-01-07 18:59 xx
BasicComboBoxUI 换成 MetalComboBoxUI 就行了~~~  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: