2010-03-27 4 views
12

Quelqu'un peut-il me dire comment créer une table sans en-tête de table?JTable sans en-tête

Je crée un puzzle Sudoku et je veux créer une table sans l'en-tête du tableau en Java. C'est possible?

+0

Ne pas ajouter les noms de colonnes ... utiliser tout autre constructeur ... ou par défaut? J'espère que vous parlez de JTable .. – RubyDubee

+2

@saurabh: 3133t parler n'est pas le bienvenu ici. J'ai corrigé votre message mais la prochaine fois, n'utilisez pas "any1", "plz thx" et plusieurs "??". Est-ce que je peux faire du cheezburger? – SyntaxT3rr0r

+2

quelle table? a-t-il besoin de chaises aussi? lol –

Répondre

25

Je ne pense pas que vous voulez que votre Sudoku pour faire défiler, de sorte que la meilleure façon devrait être pas pour mettre votre table dans un JScrollPane, qui est responsable de l'affichage l'en-tête:

alt text


l'autre façon est d'appeler

table.setTableHeader(null); 
+0

Pour moi, aucune solution n'a aucun effet sur l'en-tête. J'ai même essayé 'table.getTableHeader.setVisible (false)' mais j'ai toujours un point gris vide où l'en-tête serait. Je sais que c'est un vieux poste; l'API a-t-elle changé, ou ai-je oublié quelque chose? –

+0

On dirait qu'il vous manque quelque chose, j'ai juste essayé les deux moyens suggérés et ils fonctionnent. Définir le TableHeader invisible laisse en effet un point gris puisque la mise en page ne change pas. Si vous ne pouvez pas le résoudre, n'hésitez pas à poser une autre question avec un court exemple pour reproduire votre problème et une capture d'écran du résultat. –

1

donc, l'astuce semble être d'abord définir un en-tête en utilisant le constructeur DefaultTableModel mais plus tard pour appeler setTableHeader (null);

enter image description here

Voici un code de démonstration:

package net.raysforge.visual.demo; 

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 
public class JTableAndGBC { 

    private String[] columnNames = {"Source", "Hit", "Last", "Ur_Diff"}; 
    private JTable table; 
    private Object[][] data = {{"Swing Timer", 2.99, 5, 1.01}, 
     {"Swing Worker", 7.10, 5, 1.010}, {"TableModelListener", 25.05, 5, 1.01}}; 
    private DefaultTableModel model = new DefaultTableModel(data, columnNames); 

    public JTableAndGBC() { 
     JPanel panel = new JPanel(new GridBagLayout()); 
     table = new JTable(model); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.weightx = 1.0; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     JScrollPane pane = new JScrollPane(table); 
     table.setPreferredScrollableViewportSize(table.getPreferredSize()); 
     table.setTableHeader(null); 
     panel.add(pane, gbc); 
     JFrame frame = new JFrame(); 
     frame.add(panel, BorderLayout.CENTER); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String args[]) throws Exception { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new JTableAndGBC(); 
      } 
     }); 
    } 
} 
3

Toute personne ayant des problèmes avec les méthodes proposées, procédez comme suit:

jTable.getTableHeader().setUI(null); 

Ceci est testé avec Java 8.