2013-08-30 40 views
2

我需要从JTable隐藏标题栏?所以我只需要没有任何实际名称的行和列来显示touser?有没有其他的挥杆做类似的事情?我不能添加如何使用Netbeans GUI设计从JTable隐藏标题?

jTable1.setTableHeader(null); 

initComponents函数中的任何地方,我试过但得到一个错误?

import java.util.ArrayList; 
import java.util.Vector; 
import javax.swing.table.DefaultTableModel; 

public class table extends javax.swing.JFrame { 

    public table() { 
     initComponents(); 
     jTable1.setTableHeader(null); 
    } 

    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTable1 = new javax.swing.JTable(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTable1.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] { 
       {null, null} 
      }, 
      new String [] { 
       "Name", "Age" 
      } 
     ) { 
      Class[] types = new Class [] { 
       java.lang.String.class, java.lang.Integer.class 
      }; 

      public Class getColumnClass(int columnIndex) { 
       return types [columnIndex]; 
      } 
     }); 
     jScrollPane1.setViewportView(jTable1); 

     jButton1.setText("jButton1"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jButton2.setText("jButton2"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 408, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(0, 0, Short.MAX_VALUE)) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(67, 67, 67) 
       .addComponent(jButton1) 
       .addGap(51, 51, 51) 
       .addComponent(jButton2) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(18, 18, 18) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton1) 
        .addComponent(jButton2)) 
       .addGap(0, 30, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    class employee{ 
     private int age; 
     private String name; 
     public employee(int a, String n){ this.age = a; this.name = n;} 
    } 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           




     DefaultTableModel model = (DefaultTableModel) jTable1.getModel(); 
     model.addRow(new Object[]{"behzad",14}); 

    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(table.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(table.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(table.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(table.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new table().setVisible(true); 

      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTable jTable1; 
    // End of variables declaration     
} 

回答

3

您可以使用

table.setTableHeader(null); 
+0

我不能这样做,请看看编辑 – Bernard

+1

你是Swing GUI生成代码的牺牲品(你忘了在线程“AWT-EventQueue-0”java.lang.NullPointerException中提到异常),但如果JTable没有被初始化,则工作正常 – mKorbel

+0

我从不使用生成的代码构建器的原因之一 - 手动编码允许更多的代码控制:)) – Reimeus

0

使用table.setTableHeader(null);

import java.awt.BorderLayout; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class NullColumnHeader { 
    public static void main(String args[]) { 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3" }, 
     { "Row2-Column1", "Row2-Column2", "Row2-Column3" } }; 
    Object columnNames[] = { "1", "2", "3" }; 
    JTable table = new JTable(rowData, columnNames); 
    JScrollPane scrollPane = new JScrollPane(table); 

    table.setTableHeader(null); 

    frame.add(scrollPane, BorderLayout.CENTER); 
    frame.setSize(300, 150); 
    frame.setVisible(true); 

    } 
} 
+0

我只是有一个问题。我正在使用netbeans GUI设计,我不能将任何行添加到生成的代码中。任何想法? – Bernard

+0

@Bernard不使用Netbeans的构建器 kleopatra

0

你只需要将setTableHeader(null)方法设置为null即可。

+0

我不能这样做,请看看编辑 – Bernard

0

您可以使用setTableHeader()方法设置表头null。

table.setTableHeader(null); 
4

也许你可以使用:

initComponents(); 
//jTable1.setTableHeader(null); 
jScrollPane1.getColumnHeader().setVisible(false); 
0

可以扩展JTable类,并将其头(在构造函数的结尾)。

public class TableWithoutHeader extends JTable{ 
    public TableWithoutHeader(){ 
     //Code to construct your table 
     setTableHeader(null); 
    } 
} 

现在你可以插入一个TableWithoutHeader,如果它是你的调色板的一部分。