2015-04-03 5 views
1

Я новичок в кодировании GUI на Java (с использованием swing), и я застреваю в точке, где JTable не хватает заголовков столбцов, и вокруг таблицы нет скроллера.Скроллер и столбец не видно

Изображение что это выглядит следующим образом: http://i.gyazo.com/28a66d42bd9365b2c3c9bfd7c8907cee.png

Код:

scrollPane = new JScrollPane(); 
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER); 

    table = new JTable(); 
    table.setFillsViewportHeight(true); 
    table.setModel(new DefaultTableModel(new Object[][] { 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, 
      { null, null, null, null, null }, }, new String[] { 
      "New column", "New column", "New column", "New column", 
      "New column" })); 
    scrollPane.setColumnHeaderView(table); 

ответ

2

Просто добавьте JTable в иллюминатор JScrollPane в качестве его точки зрения. Это проще всего сделать через таблицу в конструкторе JScrollPane в:

// create JTable, table, first 
JScrollPane scrollPane = new JScrollPane(table); 

// now add scrollPane to GUI 

В качестве альтернативы, вы можете создать вещи в порядке, что вы делаете, и добавить JTable явно в окне просмотра, как его взгляд:

scrollPane.setViewportView(table); 

Например:

import java.awt.BorderLayout; 
import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public class Foo2b extends JPanel { 
    private static final String[] COLUMNS = { "Column One", "Column Two", 
     "Column Three", "Column Four", "Column Five" }; 
    private static final int ROW_COUNT = 30; 
    private DefaultTableModel tableModel = new DefaultTableModel(COLUMNS, ROW_COUNT); 
    private JTable table = new JTable(tableModel); 

    public Foo2b() { 
     table.setFillsViewportHeight(true); 

     setLayout(new BorderLayout()); 
     JScrollPane scrollPane = new JScrollPane(table); 
     scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

     add(scrollPane, BorderLayout.CENTER); 
    } 

    private static void createAndShowGui() { 
     Foo2b mainPanel = new Foo2b(); 

     JFrame frame = new JFrame("Foo2b"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 
+0

Второе решение работал отлично! Также, спасибо за пример :) – Muki