【问题标题】:Issue using JTable inside JScrollPane在 JScrollPane 中使用 JTable 的问题
【发布时间】:2017-12-28 23:47:11
【问题描述】:

试图在 JScrollPane 中包含一个 JTable。但问题是,每次我在表中添加另一行时,JFrame 的大小都会随着高度的增加而增加(下面的截图供参考)。我不希望它这样做。显然,由于它位于滚动窗格中,因此如果我继续向表格中添加行,我希望实际显示一个滚动条并用于向下滚动以查看表格中较低的值。

截图:http://i.imgur.com/dUqQW7N.jpg

代码:

String[] columns = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};

Object[][] data = {
        {"Kathy", "Smith", "Snowboarding", 5, false},
        {"John", "Doe", "Rowing", 3, true},
        {"Sue", "Black", "Knitting", 2, false},
        {"Jane", "White", "Speed reading", 20, true},
        {"Joe", "Brown", "Pool", 10, false}
};

searchBox = new JTextField();
searchButton = new JButton();
rentCarButton = new JButton();
rentedCarsButton = new JButton();
table = new JTable(data, columns);
table.setPreferredScrollableViewportSize(table.getPreferredSize());
scrollPane = new JScrollPane(table);

任何帮助将不胜感激。

【问题讨论】:

  • 在您发布的代码中创建表格后,您永远不会向表格添加任何内容。发布一个完整的、最小的示例来重现问题。
  • 这不是重点。关键不是我要使用动态方法向表中添加行,而是滚动窗格和表没有按照我想要的方式执行。我已经测试了同样的解决方案,但是在“数据”对象多维数组中添加了更多行,我看到 JFrame 被拉伸了。我想要一个实际使用滚动窗格中的滚动条的解决方案。
  • 那么不要使用 table.getPreferredSize() 作为首选的可滚动视口大小。表的首选大小是允许它显示所有行的大小。使用您想要的固定尺寸。
  • 更多here.

标签: java swing jtable jscrollpane


【解决方案1】:

Welp 答案就在我面前,我只是更改了代码行

table.setPreferredScrollableViewportSize(table.getPreferredSize());

table.setPreferredScrollableViewportSize(new Dimension(400, 100));

我觉得自己很笨。

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多