2014-01-16 139 views
0

我想設計JTable,但列名不顯示我不知道爲什麼數組被聲明可以有人看看這段代碼table = new JTable(數據,columnNames);我試圖在Java教程看,但我沒有發現它告訴現在列名不顯示在JTable

package AnimeAid; 

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.TableColumn; 


    /** 
    * 
    * @author isslam 
    */ 
    public class GuiInterface extends JFrame { 
     JTable table; 

     public static void main(String[] args) { 
     GuiInterface is = new GuiInterface("t"); 
     is.setVisible(true); 
     } 

     public GuiInterface(String title){ 
     setSize(900, 700); 
     setTitle(title); 
     setDefaultCloseOperation(GuiInterface.EXIT_ON_CLOSE); 
     String[] columnNames = {"#","Start","End","Translation column"}; 
     Object[][] data = { 
     {"1", "00:00:01,600","00:00:04,080", "Mr Magnussen, please state your\n" + 
     "full name for the record."}, 
     {"2", "00:00:04,080 ","00:00:07,040","Charles Augustus Magnussen."}}; 

     table = new JTable(data, columnNames); 
     table.setFillsViewportHeight(true); 
     table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 
      TableColumn columnA = table.getColumn("#"); 
      columnA.setMinWidth(10); 
      columnA.setMaxWidth(20); 
      TableColumn columnB= table.getColumn("Start"); 
      columnB.setMinWidth(80); 
      columnB.setMaxWidth(90); 

      TableColumn columnC= table.getColumn("End"); 
      columnC.setMinWidth(80); 
      columnC.setMaxWidth(90); 


     JScrollPane scrollPane = new JScrollPane(table); 
     add(scrollPane); 


     //contaner part 
     Container cp = getContentPane(); 
     cp.add(table); 



     }} 

回答

5

的問題是,你已經添加了表的內容窗格。這有效地將它從滾動窗格中移除,該窗格負責顯示錶格列標題。

刪除以下行

Container cp = getContentPane(); 
    cp.add(table); 
+0

所以沒有必要Cont ainer cp = getContentPane();即使在添加actionLisner後 –

+0

您可以使用getContentPane,但自從Java 5以來,方法(如自動添加和移除委託到內容窗格)。 – MadProgrammer

0
package com.tom.mom; 
import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.TableColumn; 


    /** 
    * 
    * @author isslam 
    */ 
    public class GuiInterface extends JFrame { 
     JTable table; 

     public static void main(String[] args) { 
     GuiInterface is = new GuiInterface("t"); 
     is.setVisible(true); 
     } 

     public GuiInterface(String title){ 
     setSize(900, 700); 
     setTitle(title); 
     setDefaultCloseOperation(GuiInterface.EXIT_ON_CLOSE); 
     String[] columnNames = {"#","Start","End","Translation column"}; 
     Object[][] data = { 
     {"1", "00:00:01,600","00:00:04,080", "Mr Magnussen, please state your\n" + 
     "full name for the record."}, 
     {"2", "00:00:04,080 ","00:00:07,040","Charles Augustus Magnussen."}}; 

     table = new JTable(data, columnNames); 
     table.setFillsViewportHeight(true); 
     table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 
      TableColumn columnA = table.getColumn("#"); 
      columnA.setMinWidth(10); 
      columnA.setMaxWidth(20); 
      TableColumn columnB= table.getColumn("Start"); 
      columnB.setMinWidth(80); 
      columnB.setMaxWidth(90); 

      TableColumn columnC= table.getColumn("End"); 
      columnC.setMinWidth(80); 
      columnC.setMaxWidth(90); 


     JScrollPane scrollPane = new JScrollPane(table); 

     add(scrollPane); 



} 
    } 

,因爲你已經延伸和JFrame的,你是在類的構造函數這不過是一個JFrame,所以你在那個位置的工作不存在需要獲取區域並放置組件。當我們在構造函數中完成這種類型的編碼時,我們不採用getContentPane並放置我們的組件。當您正在構造函數之外並嘗試將一些組件放入框架時,它是必需的。