稍后将以下组件添加到 JFrame,但它不会拉伸 JTable,因为我拉伸框架以填充 scrollPane:
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() 的情况下,不是有一个简单的默认布局可以实例化吗?我只是想知道是什么阻止了表格在第一个版本中拉伸到滚动窗格的大小
编辑:仅修复代码格式,但必须添加一些文本才能提交:/