LazyCat2222
2009-06-29 10:14
采纳率: 0%
浏览 213
已采纳

下拉框选项过长

JComboBox,我往里面放入值,下拉框选项的值有几十个才显示滚动条。我用setMaximumRowCount(10)这个方法设置长度都没用。用到了mac风格的jar。再xp下面不会出现这样的情况,请问有没有什么解决方式解决这个问题?
望大虾们指点一下,没有多少积分,下次有积分的时候给补上哈。。。。
[b]问题补充:[/b]
它getMaximumRowCount(); 打印出来的是只有8,但是下来选项确还是那么长,而且setMaximumRowCount(); 但是不起反映,调用他都完全起不了作用,什么也没改变。
[b]问题补充:[/b]
类似jake0719的方法 是什么方法呢?能否详细介绍一下哦~
[b]问题补充:[/b]
jake0719 非常谢谢你的帮忙,但是还是没有怎么明白你说的。我用mac风格的一个quaqua.jar。程式就显示出来mac的风格,是在xp的环境下面。你说的那个popou,CreatPopupMenu没怎么明白哦,它是针对JComboBox的吗?还是怎么的?

“接设置popup出来的pane的大小了. ”是指。。。?
[b]问题补充:[/b]
不能,也没有。。。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • jake0520 2009-07-01 11:02
    已采纳

    本来用setMaximumRowCount在windowNT下就可以解决你的问题.但是由于你在mac机上不行,估计是jdk在不同平台上的表现不一致的问题, 也就是mac-jdk的问题,所以怎么setMaximumRowCount都没用, 那就干脆直接设置popup出来的pane的大小了.

    也许你会问为什么不createPopupMenu的时候设置好大小就ok了,何必每次popup的时候设置这么麻烦呢? 因为我在xp下试过了这样做不行. 呵呵, 具体原因没时间深究下去了.所以你先这么试试看, ok的话就这样用着好了.

    已采纳该答案
    打赏 评论
  • iteye_4808 2009-06-29 12:00

    这个源码我也没有看过,不过我想肯定是可以做到的,我也做到类型的工作.我是修改了源码,先要看一下那个下拉是一个什么标签组成的,这后就可以根据标签的属性来修改

    打赏 评论
  • jake0520 2009-06-29 15:16

    试试这样(虽然不怎么艺术):

        JComboBox box = new JComboBox(model);
        final Dimension ds = new Dimension(100, 400);
        box.addPopupMenuListener(new PopupMenuListener() {   
            public void popupMenuCanceled(PopupMenuEvent noop) { }    
            public void popupMenuWillBecomeInvisible(PopupMenuEvent noop) { }   
            public void popupMenuWillBecomeVisible(PopupMenuEvent pme) {   
              JComboBox cb = (JComboBox)pme.getSource();   
              Object popup = cb.getUI().getAccessibleChild(cb, 0);     
              if (popup instanceof Container) {   
                Component scrollPane = ((Container)popup).getComponent(0);   
                if (scrollPane instanceof JScrollPane) {   
                  ((JComponent)scrollPane).setPreferredSize(ds);   
                  ((JComponent)scrollPane).setMaximumSize(ds);    
                }   
              }   
            }   
          });
    
    打赏 评论
  • iteye_19580 2009-06-30 12:34

    JComboBox cb = new JComboBox(model);
    cb.getMaximumRowCount();
    先看看现在的max row是多少,
    再setMaximumRowCount(10);
    看看值有没有改变。

    打赏 评论
  • iteye_19580 2009-06-30 20:52

    8是默认行数,setMaximumRowCount()压根没起作用,试试类似jake0719的方法吧。

    打赏 评论
  • jake0520 2009-07-01 10:57

    下拉框其实就是一个popup出来的Jscrollpane(其实就是visible和invisible之间的转换), 给jcombobox加了一个PopupMenuListener, 每次visible的时候设置下jscrollpane的size. 所以我说不怎么艺术. 这个size由
    final Dimension ds = new Dimension(100, 400); 决定.你可以自己修改这个大小.

    打赏 评论
  • liukaihandsome 2009-07-03 12:53

    不能用子下拉列表吗?

    打赏 评论
  • wanghaolovezlq 2009-07-13 10:49

    朋友,问题要自动关闭啦,结分哦

    打赏 评论

相关推荐 更多相似问题