WEB开发网
开发学院软件开发Java JComboBox的下拉框向上 阅读

JComboBox的下拉框向上

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示:最近学习SWING,改变JComboBox的的显示方式,JComboBox的下拉框向上,这里是将JComboBox的下拉框向上显示,以下为详细代码:packagekissJava.JComboBox;importjava.awt.Dimension;importjavax.swing.JButton;importjav

最近学习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(50, 150, 200, 20);
    this.add(jcb, null);
    setSize(300, 300);
    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 - 5, 17 * 5);
          scroller.setMaximumSize(popupSize);
          scroller.setPreferredSize(popupSize);
          scroller.setMinimumSize(popupSize);
          show(comboBox, newsBarTitleWidth, -17 * 5);//getPopupHeightForRowCount(10));
    }
  };
  popup.getAccessibleContext().setAccessibleParent(comboBox);
  return popup;
 }
  }
}

显示效果为:

JComboBox的下拉框向上

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

Tags:JComboBox 下拉 向上

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接