【问题标题】:How to create dynamic Jlist in java when jlist height is dependent on number of Rows in List?java - 当jlist高度依赖于List中的行数时,如何在java中创建动态Jlist?
【发布时间】:2018-01-25 07:41:15
【问题描述】:

我正在 java 中创建一个 jlist,我希望根据列表中的行数将列表的高度设为动态:

  • 我的意思是当列表中没有行时,它不应该显示那个空列表框,(我想将jlist最小高度设置为0)
  • 我想将列表的最大高度设置为固定,当行超过该最大高度时,它应该开始滚动 jlist
  • 当列表占用的高度小于最大高度尺寸时,它应该只显示那些被行占用的空间(我的意思是列表上不应显示空白空间)

我已经创建了一个 jlist,但是当行数占用的空间小于最大列表空间高度时,它会显示空白空间。

【问题讨论】:

    标签: java swing user-interface jlist netbeans-8


    【解决方案1】:

    您可以覆盖getPreferredSize() 方法以根据您的要求返回大小。

    但首先你需要做:

    list.setVisibleRowCount(???);
    

    这将允许默认的首选大小计算在滚动条出现之前计算列表的大小。

    然后需要修改JListgetPreferredSize()方法。它可能看起来像:

    @Override
    public Dimension getPreferredSize()
    {
        Dimension d = super.getPreferredSize();
    
        int rows = getModel().getSize();
    
        if (rows < getVisibleRowCount())
        {
            int rowHeight = d.height / getVisibleRowCount();
            d.height = rows * rowHeight;
        }
    
        return d;
    }
    

    【讨论】:

    • 我不擅长 java 的 gui 设计。我正在使用 netbeans 作为拖放,我在 jframe 中放置了 jlist,其余工作由 netbeans 完成......我不明白如何覆盖这个 getPreferredSize() 函数......
    • @HemantDhanuka,如果您不知道如何覆盖类的方法,那么您不应该使用 GUI 设计器。我从来没有使用过 GUI 设计器,所以我不能告诉你怎么做。我宁愿花时间学习 Java,而不是 IDE。如果您曾经切换到其他 IDE,那么您的代码将无法在其他 IDE 中维护。所以我建议你只使用IDE来帮助编译和调试,而不是生成表单或代码。
    猜你喜欢
    • 2014-06-05
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2012-11-15
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    相关资源
    最近更新 更多