我固定了JComboBox的长度,由于下拉菜单的内容很长所以显示不全!怎么改变下拉菜单的长度,或者用什么办法让它能显示出来

解决方案 »

  1.   

    小弟的blog上有关于这个源码,可以去看下, 不知道是不是可以用在你的应用上.
    http://blog.csdn.net/bradwoo8621
      

  2.   

    下拉菜单的长度好象设置不了。
    解决方法 或者增加JComboBox的长度
    或者可以把JComboBox设置成可编辑的
    这样用户就可以得到那个超长的内容了
      

  3.   

    我现在用的方法是使用ToolTip,给每个下拉菜单选项加上ToolTip,超长的部分在ToolTip上就可以看到了
      

  4.   

    添加ToolTip,只需要给JComboBox添加一个Renderer,
    继承BasicComboBoxRenderer类,重写其方法
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
        class CustomComboBoxRenderer extends BasicComboBoxRenderer
        {
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                    boolean cellHasFocus)
            {
                if (isSelected)
                {
                    setBackground(list.getSelectionBackground());
                    setForeground(list.getSelectionForeground());
                    if (-1 < index)
                    {
                        list.setToolTipText((value == null) ? null : value.toString());
                    }
                }
                else
                {
                    setBackground(list.getBackground());
                    setForeground(list.getForeground());
                }
                setFont(list.getFont());
                setText((value == null) ? "" : value.toString());
                return this;
            }
        }接着设置RenderercomboBox.setRenderer(new CustomComboBoxRenderer());
      

  5.   

    //下面这段代码在JDK1.4测试通过,或许对你有用
    package testtools;import java.awt.*;
    import javax.swing.*;import javax.swing.plaf.basic.*;public class TestJComboBoxJTable {    public static void main(String[] args) {
            class myCombo
                extends JComboBox {
                public myCombo() {
                    super();
                    setUI(new myComboUI());
                } //end of default constructor            class myComboUI
                    extends BasicComboBoxUI {
                    protected ComboPopup createPopup() {
                        BasicComboPopup popup = new BasicComboPopup(comboBox) {
                            protected JScrollPane createScroller() {
                                return new JScrollPane(list,
                                    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                                    ScrollPaneConstants.
                                    HORIZONTAL_SCROLLBAR_AS_NEEDED);
                            } //end of method createScroller
                        };
                        return popup;
                    } //end of method createPopup
                } //end of inner class myComboUI
            }
            JFrame aFrame = new JFrame();
            myCombo JComboBox1 = new myCombo();
            JComboBox1.setPreferredSize(new Dimension(20, 20));
            JComboBox1.setMaximumSize(new Dimension(30, 20));
            String[] aArr = {
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "BBAAAAAAAAAAA", "CCCCC", "DDDDDDDDDDDDD", "EEEEEEEEEEEE",
                "FFFFFFFFFFFFFFFFFFFFFFFFFFFF",
                "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "BBAAAAAAAAAAA",
                "CCCCC", "DDDDDDDDDDDDD", "EEEEEEEEEEEE",
                "FFFFFFFFFFFFFFFFFFFFFFFFFFFF",
                "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"};
            for (int i = 0; i < aArr.length; ++i)
                JComboBox1.addItem(aArr[i]);
            aFrame.getContentPane().add(JComboBox1);
            aFrame.getContentPane().setSize(100, 100);
            aFrame.pack();
            aFrame.setVisible(true);
        }
    }