uhm*_*uhm 2 java swing jcombobox
我使用带有许多条目的JComboBox(数百个).我想将其下拉列表的大小限制为屏幕的垂直大小.对于不同的外观和屏幕分辨率,使用固定大小无法正常工作.
我在Windows 7上使用Java 6u25.
如果我将最大行数设置为超过适合屏幕(75)的列表项(=行)数的值(例如100),则下拉列表似乎以完整大小绘制但是最低条目永远不可见.
这是插图的截图(感谢@trashgod的SSCCE).在XP上的虚拟机中拍摄了sceenshot.

我还在另一台PC上测试了代码,所以我想我可以排除一些驱动程序问题.
我喜欢的是一个适合屏幕的下拉列表,我可以完全向下滚动到最后一个值(并查看该值).反过来说,我想看滚动条的向下滚动按钮.
是否唯一可能渲染列表的单元格并在计算中使用它?操纵组合框的高度参数不起作用.
任何想法如何解决这个问题?
让我感到困惑的是,我没有找到任何关于这个问题的参考.我假设我要么缺少明显的东西,要么我在搜索时使用了错误的关键字.如果后两者中的任何一个,我道歉请给我一个提示.
谢谢.
我觉得这个描述很难相信.你能用SSCCE备份它吗?
你的怀疑是有根据的; 我的描述是基于远程实现的远程记忆.使用下面的sscce,我看到一个滚动条和@uhm报告的截断; 我只能使用键盘从最后的六个隐藏条目中进行选择.我在这些平台上得到了类似的结果:
Mac OS X: [Aqua Look and Feel for Mac OS X - com.apple.laf.AquaLookAndFeel] Ubuntu: [The Java(tm) Look and Feel - javax.swing.plaf.metal.MetalLookAndFeel] Windows: [The Java(tm) Look and Feel - javax.swing.plaf.metal.MetalLookAndFeel]
import java.awt.EventQueue;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
/** @see http://stackoverflow.com/questions/8270256 */
public class TallCombo extends JPanel {
    private static final int N = 128;
    public TallCombo() {
        final JComboBox combo = new JComboBox();
        for (int i = 0; i < N; i++) {
            combo.addItem("Item " + Integer.valueOf(i));
        }
        combo.setMaximumRowCount(N / 2);
        this.add(combo);
    }
    private void display() {
        JFrame f = new JFrame("TallCombo");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        System.out.println(UIManager.getLookAndFeel());
    }
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TallCombo().display();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2720 次  |  
        
|   最近记录:  |