次のコンポーネントは後で JFrame に追加されますが、フレームを拡大して scrollPane を埋めるため、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() を呼び出す場合にインスタンス化されるデフォルトのレイアウトだけではありませんか? 最初のバージョンで、テーブルがスクロール ペインのサイズまで拡大するのを止める理由を知りたいだけです
編集:コード形式のみを修正しましたが、送信するテキストを追加する必要があります:/