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

标签 java swing jpanel jscrollpane layout-manager

以下组件稍后添加到 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/

相关文章:

使用迭代器的 java.util.ConcurrentModificationException

java - 无法获得正确的条件

Java Swingworker 和多线程

java - 添加文本时自动调整 jPanel 的大小

java - jpanel 无法很好地显示 jframe 设置为 gridbaglayout

java - 如何从 ByteBuffer 中获取使用过的 byte[]

java - 使用 Java 的 map

java - 现有代码抛出此错误 [Hibernate + c3p0 + Oracle11g] : a resourcepool could not acquire a resource from its primary factory or source

java - 如何以绝对定位将组件添加到 JComponent 中?

java - jPanel 的背景图像不起作用