【问题标题】:Java Swing JTable and JScrollPane to Fit Column WidthJava Swing JTable 和 JScrollPane 以适应列宽
【发布时间】:2014-01-21 10:58:24
【问题描述】:

我是 Swing 的新手,我正在使用 JTable 对象来显示一些信息。 基本上框架包含一个 JPanel -> GridBagLayout 管理器。 JPanel 包含一个 JLabel(“状态表”)、一个包含 JTable 的 JScrollPane、“排序依据”JButton 和一个 JComboBox。

如何设置列/列标题的宽度以完整显示其中包含的文本?

我尝试使用

table.getColumnModel().getColumn(i).setPreferredWidth(my_width); 

但问题是为了达到我想要的结果,所有列的宽度之和大于JScrollPane的宽度,所以什么都不会发生,它们会和以前一样。

我尝试使用 JScrollPane 的 setSize 方法,以便将其调整为与窗口一样大...但由于 GridBagLayout 管理器,它似乎无法大于某个大小,但仍然没有适合文本。

附加信息: JTable 是根据我实现的模型构建的,我修改的唯一 GridBagConstraints 是 gridx、gridy 和 fill = BOTH。

【问题讨论】:

    标签: java swing jtable jscrollpane


    【解决方案1】:

    请参阅Table Column Adjuster,了解调整每列大小的简单方法。

    只有表格应该添加到滚动窗格中。您可能还需要使用:

    table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
    

    允许每列以其首选大小显示。

    所有列的宽度之和大于JScrollPane的宽度,所以什么都不会发生,

    您的 gridbag 约束有问题。组件应该增长以填满所有空间。也许使用 BorderLayout 会更容易。将滚动窗格添加到中心并将其他组件添加到北/南。您可以使用不同的布局管理器嵌套面板以获得所需的布局。

    【讨论】:

    • 使用 BorderLayout。谢谢。
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多