【问题标题】:How to set JScrollPane to show only a sepecific amount of rows如何将 JScrollPane 设置为仅显示特定数量的行
【发布时间】:2012-03-22 20:43:32
【问题描述】:

我只需要一个表格来显示 3 行,这些行从 DB 获得前 3 名畅销产品。桌子已经准备好了,但是桌子的很大一部分实际上是空的,除了 3 行。如何设置此滚动窗格的高度以匹配 3 行的高度?

解决方案:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

【问题讨论】:

    标签: java swing jtable jscrollpane


    【解决方案1】:

    这是 JTable 的 Scrollable 实现的一个怪癖:它设置了任意固定的 prefScrollable 大小。

    您将其设为 null 以使 scrollPane 回退到使用表的 preferredSize:

    table.setPreferredScrollableViewportSize(null);

    编辑

    outch,@vedran 是正确的,这并不总是在带有核心 layoutManagers 的核心表中工作(它是一个 nice hack in another question :) 很抱歉造成混淆。在这里复制他的评论:

    table.setPreferredScrollableViewportSize(table.getPreferredSize());
    

    是一个可行的选择,尽管所有关于硬编码大小的常见注意事项也适用于此。

    一个表现良好的 JTable 将实现一个更合理的 getPreferredScrollableViewportSize,f.i 根据内容计算它。 JXTable(这是表现最好的表,我有偏见:-),您可以根据可见行设置首选项,就像在列表中一样:

    xtable.setVisualRowCount(3); 
    

    【讨论】:

    • +1,我猜你又比我更好了 :-),但不会将其设置为 null,会从视图中清除整个 JTable 吗?
    • @GagandeepBali 没有。列名仍然可见:)
    • 其实table.setPreferredScrollableViewportSize(table.getPreferredSize());会设置正确的高度
    • @mKorbel 不同之处在于我的建议工作可靠,请参阅编辑:-)
    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2015-04-08
    • 2012-02-18
    • 2011-08-02
    相关资源
    最近更新 更多