当前位置: 首页 > 知识库问答 >
问题:

运行时调整JScrollPane(包含一个JTable)的大小

卫高明
2023-03-14

我有一个基本的JFrame--它包含一个JTable(由NetBeans swing GUI builder自动添加的JScrollPane包围,我希望保留滚动窗格)。

当从按钮单击实例框架时,JTable中的行数可能会根据它是从哪个按钮打开的而改变。我想调整JTable的大小,这样如果只有2行,它就不会因为有额外的空间而看起来很傻。包含JTable的JScrollPane似乎是给我带来问题的原因。下面是我的代码:

public dynamicScrollPaneResize() {
    initComponents();

    exampleTable.setShowGrid(true);

    DefaultTableModel exampleTableModel = (DefaultTableModel)exampleTable.getModel();
    exampleTableModel.setRowCount(0);
    Object[] firstRow = {"Sweater 1","Blue"};
    Object[] secondRow = {"Sweater 2","Purple"};
    exampleTableModel.addRow(firstRow);
    exampleTableModel.addRow(secondRow);

    exampleScrollPane.setPreferredSize(new Dimension(exampleTable.getWidth(),10));
    exampleScrollPane.setMaximumSize(new Dimension(exampleTable.getWidth(),10));
    exampleTable.setFillsViewportHeight(true);

    this.revalidate();
    this.repaint();
}

我尝试清除行,然后添加我想要的2,然后相应地调整大小。我只是把10作为高度,因为我知道我会看到差异,但我没有。如果我尝试调整表格的大小,它可以正常工作,但是调整滚动窗格的大小到目前为止没有效果。

共有1个答案

长孙章横
2023-03-14
  1. 转到设计视图
  2. 在左下角的导航器窗口中选择滚动窗格。
  3. 右击弹出菜单。
  4. 确保选中自动调整大小->水平自动调整大小->垂直
  5. 添加一个名为paneSize(例如)的类变量,类型为Dimension。
  6. 从弹出式菜单中选择滚动窗格的属性。
  7. 单击PreferredSize旁边带有...的按钮。
  8. 将属性使用更改为自定义代码
  9. 自定义代码的文本字段中,输入所添加变量的名称。(如paneSize)。
  10. 在调用initComponents之前,将paneSize设置为构造函数中所需的任何内容。
 类似资料:
  • 问题内容: 在Java应用程序中使用时,我遇到了一个小问题。 我有一个。这被动态地与按钮(垂直排序),其可以是任何宽度的更新。的自动调整其宽度最大的部件内部。 现在,当出现垂直滚动条时,它会占用my右侧的一些空间,这将导致最大的按钮无法完全显示。除了显示整个按钮之外,我不想使用水平滚动条。 当滚动条出现时,是否有办法调整我的大小,使其很好地显示在我的按钮旁边?还是有其他方法可以使滚动条出现在我的旁

  • 问题内容: 我有一个将动态填充的表格,我希望表格始终调整大小以适合行数。我不希望任何滚动,因为表格位于面板中,并且面板的内容需要打印。我已经试过了: 但这似乎不起作用。 问题答案: 我认为这不是最好的方法。但是正如您所坚持的,我将代码放在下面。

  • 我注意到在添加滚动条时会调整高度内容的大小(因为内容超过了宽度)。 密码... 注意:如果我使用,它会在最大化窗口时增加边框之间的间距,我不希望这样。 正如您所看到的,第2行被切断了,是否有必要不调整它的大小(除了将它设置为,如果最大化窗口,它仍然显示条形)?

  • 我想减少GridBagLayout中JTextField和JScrollPane的宽度和高度,但似乎通过设置文本字段列,宽度只能减少到JList中最长内容的长度。我不确定是否需要调整组件的两个或一个尺寸以匹配宽度。 我尝试了setPreferredSize()、setSize()和在文本字段上设置列长度,但它们似乎没有任何作用。

  • 我有一个JTable对象。如何获取对JTable所在的JScrollPane的引用?

  • 我有一个针对不同元素的JPanels集合:JPanelShowPane、seasonsPane、episodesPane、airingsPane 所有这些元素的setLayout设置为null,大小固定为304x416。我将这些JPanel添加到一个大小为1280x416的名为showViewPanel的JPanel中,并设置了一个BoxLayout,如下所示(下面是JFrame中的代码): 我搞