2012-11-08 96 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

您必须将表放入滚动窗格,然后将滚动窗格添加到标签。它应该以这种方式工作,你可能不需要做更多的事情。