【问题标题】:JTable column header not visibleJTable 列标题不可见
【发布时间】:2011-05-18 15:18:18
【问题描述】:

列标题在我的 JTable 中不可见我创建了一个 JPanel 并将 JTable 添加到 JPanel。

Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3"},
                { "Row2-Column1", "Row2-Column2", "Row2-Column3"} };
            Object columnNames[] = { "Column One", "Column Two", "Column Three"};
            JTable jTable = new JTable(rowData, columnNames); 

【问题讨论】:

  • 我相信您需要将它放在 JScrollPane 中以显示列名...
  • 通过将 JTable 添加到 JScrollPane 来工作
  • 不要忘记将 Amir 的答案标记为“正确”。 @Dilum:为什么这是评论而不是答案?
  • 您不需要将 JTable 放在 JScrollPane 中以显示标题。请参阅下面我的回答。
  • 最好的方法是首先将 JPanel 添加到 JFrame 中,然后将 GroupLayout 添加到 JPanel 中,然后添加 JScrollPane 。最后将 JTable 添加到视口中,有列标题、行标题和视口三个部分。如果要将 JTable 添加到视口,则只有列标题可见,否则将不会显示

标签: java swing


【解决方案1】:

JTable 状态的 API:

"请注意,如果您希望在独立视图中使用 JTable(外部 的 JScrollPane) 并希望显示标题,您可以使用 getTableHeader() 并单独显示。”

或者只是将表格添加到滚动窗格,然后将滚动窗格添加到面板...

【讨论】:

    【解决方案2】:

    以下是在不使用 JScrollPane 的情况下向 JTable 添加标题的方法:

    int rows = 21;
    int cols = 3;
    JTable table = new JTable(rows, cols);
    JTableHeader header = table.getTableHeader();
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.add(header, BorderLayout.NORTH);
    panel.add(table, BorderLayout.CENTER);
    

    【讨论】:

      【解决方案3】:

      您可以将以下代码添加到您的代码中

      DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
      renderer.setPreferredSize(new Dimension(0, 0));
      table.getTableHeader().setDefaultRenderer(renderer);
      

      【讨论】:

      • 它会移除Jtable的默认表头。默认情况下它会显示A,B,C作为表头。我们可以使用上面的代码移除这些。
      【解决方案4】:

      具有动态数据的最佳 JTable 示例(工作顺利,只需粘贴到编辑器中并作为 Java 应用程序执行):

      import java.awt.EventQueue;
      
      import javax.swing.JFrame;
      import javax.swing.JScrollPane;
      import javax.swing.JTable;
      import javax.swing.table.DefaultTableModel;
      
      public class TableTest {
      
      private JFrame frame;
      private JTable table;
      
      /**
       * Launch the application.
      */
      public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
          public void run() {
              try {
                  TableTest window = new TableTest();
                  window.frame.setVisible(true);
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      });
      }
      
      /**
       * Create the application.
       */
      public TableTest() {
      initialize();
      }
      
      /**
       * Initialize the contents of the frame.
       */
      private void initialize() {
      frame = new JFrame();
      frame.setBounds(100, 100, 450, 300);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().setLayout(null);
      
      table = new JTable();
      
      DefaultTableModel daDefaultTableModel = new DefaultTableModel(0, 0);
      
      String[] columnNames = new String[] {"Column Header1", "Column Header2", "Column 
      Header3"};
      
      daDefaultTableModel.setColumnIdentifiers(columnNames);
      
      //Dummy data for Table
      daDefaultTableModel.addRow(new Object[] {"Test1","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test2","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test3","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test4","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test5","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test6","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test7","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test8","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test9","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test10","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test11","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test12","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test13","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test14","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test15","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test16","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test17","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test18","Test2","Test3"});
      daDefaultTableModel.addRow(new Object[] {"Test19","Test2","Test3"});
      
      table.setModel(daDefaultTableModel);
      
      JScrollPane scrollPane = new JScrollPane(table);
      scrollPane.setBounds(10, 38, 414, 212);
      frame.getContentPane().add(scrollPane);
      
      
      
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 2014-01-24
        相关资源
        最近更新 更多