2012-11-08 38 views
1

有一張表我想在面板中顯示,當我點擊一個按鈕。我能夠讓桌子顯示,但我無法顯示標題。也嘗試過使用JscrollPane,但是這裏沒有任何顯示。Java JTable頭沒有顯示

的代碼主體:

公共類GUI延伸的JFrame { JButton的按鈕; 靜態JFrame框架; JTable tableA; JPanel TablePanel;

public static void main(String[] args) { 
    frame = new GUI(); 

} 

public GUI() { 
    frame = new JFrame(); 
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 

    JPanel MainPanel = new JPanel(); 
    MainPanel.setBackground(new Color(0, 0, 0)); 
    MainPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, 
      null, null, null)); 
    MainPanel.setBounds(0, 0, screen.width, screen.height - 60); 
    MainPanel.setPreferredSize(screen); 
    frame.getContentPane().add(MainPanel); 
    MainPanel.setLayout(null); 

    button = new JButton("Show Assignments"); 
    button.setFont(new Font("Tahoma", Font.PLAIN, 10)); 
    button.setBounds(MainPanel.getWidth()/2 - 65, 40, 130, 20); 
    MainPanel.add(button); 

    TablePanel = new JPanel(); 
    TablePanel.setBackground(new Color(245, 222, 179)); 
    TablePanel 
      .setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null)); 
    TablePanel.setBounds(160, 85, MainPanel.getWidth() - 170, 
      MainPanel.getHeight() - 95); 
    MainPanel.add(TablePanel); 
    TablePanel.setLayout(null); 

    button.addActionListener(new MyActionListener()); 

    frame.setExtendedState(frame.MAXIMIZED_BOTH); 
    frame.setVisible(true); 

} 

單擊按鈕時會發生什麼情況。

class MyActionListener implements ActionListener { 

     public void actionPerformed(ActionEvent e) { 

      String[] columnNames = { "AssignmentID", "Assignmenttype", 
        " AssignmentDesricption", "ClientID", "Status" }; 
      Object[][] data = { 
        { 
          "028079", 
          "Software Support", 
          "Danzafe is in need software support on their mail program.", 
          "25890", "Waiting" }, 
        { 
          "028080", 
          "Software Installing", 
          "Danzafe is in need of installation of new software on thier server.", 
          "25890", "In Progress" }, 
        { "028081", "Hardware Setup", 
          "Expert Beslag needs to get a new local server setup.", 
          "25891", "In Progress" }, 
        { 
          "028082", 
          "Hardware Support", 
          "Expert Beslag have a computer that is making troubles with the wireless internet card", 
          "25891", "Waiting" }, 
        { 
          "028083", 
          "Balacing Question", 
          "Blizzard needs help balacing out the class of World of Warcraft", 
          "00001", "Never Ends" } }; 

      tableA = new JTable(data, columnNames); 
      tableA.setBounds(5, 35, TablePanel.getWidth() - 15, 
        TablePanel.getHeight() - 15); 

      TablePanel.add(tableA.getTableHeader()); 
      tableA.setFillsViewportHeight(true); 
      tableA.setVisible(true); 
      TablePanel.add(tableA); 
      TablePanel.repaint(); 
     } 
    } 
} 
+0

請學習java命名約定並堅持使用它們。 – kleopatra

回答

3
  • 必須把JTableJScrollPane,然後JTableHeader應該是可見的

  • ,或者從默認FlowLayoutJPanel改變Layout ManagerBorderLayout

  • JTable,並獲得JTableHeader投入NORTH區域

  • 正確方法是JScrollPane只有

  • 使用不使用setBounds(),使用BUILT_IN BorderLayoutJFrame,並把JScrollPane(僅也許沒有理由使用JPanel,只有在情況下,你「LL要刨去使用CardLayout)來JComponent(s)賣出期權的CENTER area

  • 其餘單獨JPanel,這JPanel付諸NOTHRSOUTH面積來自JFrame

+0

感謝您的幫助,可悲的是,不管我做什麼,它仍然不會工作,所以我想問我是否可以在代碼中的例子。 – silvertaildk

+1

選擇一個[示例](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#eg)。 – trashgod

0

您必須將表放入滾動窗格,然後將滾動窗格添加到標籤。它應該以這種方式工作,你可能不需要做更多的事情。