2012-06-10 4 views
0

У меня есть JPanel, где я добавляю JScrollPane (см. Ниже). Я добавил JTextField, чтобы проверить, что все работает (вместо JScrollPane) и текстовое поле было добавлено в Panel. Когда я пытаюсь добавить мой JScrollPane, ничего не отображается (белый фон). Как я могу это исправить?Java - JScrollPane с JTable не показано

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; 
    } 
} 

ответ

6

Чтобы установить отображаемый компонент в JScrollPane, использовать JScrollPane#setViewportView(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); 
} 
+0

Это работает. Большое спасибо! :) –

Смежные вопросы