簡體   English   中英

Java-未顯示帶有JTable的JScrollPane

[英]Java - JScrollPane with JTable not shown

我有一個JPanel,在其中添加了JScrollPane(請參見下面的類)。 我添加了一個JTextField來驗證一切正常(而不是JScrollPane),並且該文本字段已添加到面板中。 當我嘗試添加JScrollPane時,未顯示任何內容(白色背景)。 我該如何解決?

protected JPanel createContentPanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    final String[] columnNames = { "Test1", "Test2", "Test3" };
    final String[][] data = {
            { "foo1", "foo2", "foo3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" },
            { "bar1", "bar2", "bar3" }
    };

    ScrollableTable scrollableTablePane = new ScrollableTable(data, columnNames);
    panel.add(scrollableTablePane, BorderLayout.CENTER);
    return panel;
}


public class ScrollableTable extends JScrollPane {

    public ScrollableTable(String[][] aData, String[] aColumnNames) {
        super();

        TableModel model = getTableModel(aData, aColumnNames);
        JTable overviewTable = new JTable(model);
        overviewTable.setGridColor(new Color(240, 240, 240));
        TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
        overviewTable.setRowSorter(sorter);

        this.add(overviewTable);
    }

    private TableModel getTableModel(String[][] aData, String[] aColumnNames) {
        TableModel model = new DefaultTableModel(aData, aColumnNames) {
            public Class<?> getColumnClass(int column) {
                return getValueAt(0, column).getClass();
            }
        };
        return model;
    }
}

要設置JScrollPane的顯示組件,請使用JScrollPane#setViewportView(Component)而不是add(Component)。

public ScrollableTable(String[][] aData, String[] aColumnNames) {
    super();

    TableModel model = getTableModel(aData, aColumnNames);
    JTable overviewTable = new JTable(model);
    overviewTable.setGridColor(new Color(240, 240, 240));
    TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
    overviewTable.setRowSorter(sorter);

    this.setViewportView(overviewTable);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM