2015-04-03 86 views
1

我是Java中使用GUI編碼的新手(使用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中的視口的視圖。

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

// now add scrollPane to GUI 

或者,你可以在你做的秩序創造的東西,並明確添加JTable來視其觀點:

scrollPane.setViewportView(table); 
這是最簡單的通過將表放入JScrollPane中的構造函數中完成

例如:

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 2015-04-03 13:43:03