gpt4 book ai didi

java - JTable 拉伸(stretch)到 ScrollPane 的大小

转载 作者:行者123 更新时间:2023-12-02 00:16:43 25 4
gpt4 key购买 nike

以下组件稍后添加到 JFrame,但当我拉伸(stretch)框架以填充滚动 Pane 时,它不会拉伸(stretch) JTable:

public class TableView extends JPanel {

public TableView(TableModel model) {

JTable table = new JTable(model) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
TradeTableModel model = (TradeTableModel) getModel();
if ((Boolean) model.getValueAt(row, model.findColumn("Select"))) {
Side s = (Side) model.getValueAt(row, model.findColumn("Side"));
if (s == Side.BUY)
c.setBackground(Color.BLUE);
else
c.setBackground(Color.red);
} else {
c.setBackground(Color.white);
}
return c;
}
};
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}

}

我添加:

super(new GridLayout(1, 0));

它解决了问题。但为什么需要布局呢?在调用 super() 的情况下不是会实例化一个简单的默认布局吗?我只是想知道是什么阻止表格拉伸(stretch)到第一个版本中滚动 Pane 的大小

编辑:仅修复代码格式,但必须添加一些文本才能提交:/

最佳答案

Isn't there simply a default layout that would be instantiated in the case of calling super()?

有,它是一个 FlowLayout(您可以查看 JPanel 构造函数 javadoc 或源代码来亲自查看)。 FlowLayout 为组件提供其首选大小,并且不会拉伸(stretch)它。

除了 GridLayout,您还可以使用 BorderLayout 并将其添加到 CENTER。

关于java - JTable 拉伸(stretch)到 ScrollPane 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com