JComboBox的下拉框向上

2012-03-14
浏览
导读:最近学习SWING,改变JComboBox的的显示方式,这里是将JComboBox的下拉框向上显示,以下为详细代码: package kissJava.JComboBox; import java.awt.Dimension;

最近学习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;
  }
   }
}

显示效果为:

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

SSH笔记三 反向生成DAO 优化开发目录

SSH笔记四 整合struts2

SSH笔记五 整合Tiles2

一个Java记事本的源程序

网页Applet录音机的制作