2010-08-12 4 views

Répondre

4

Voir Concepts: Editors and Renderers, en indiquant "Number - rendu par un libellé aligné à droite". Ayez juste votre TableModel pour retourner la bonne classe. Comme un exemple concret, notez que Integer est un Number, tout en examinant la mise en œuvre de getColumnClass() dans ce example.

+0

Avez-vous même essayé? cela ne fonctionne pas. Même si c'était le cas, je n'aimerais pas vraiment cette approche juste parce que vous essayez de tromper la classe en pensant que vous utilisez un certain type d'objet, ce qui peut avoir d'autres conséquences qui vont au-delà du simple alignement du texte. – searchengine27

+0

@ searchengine27: Merci d'avoir commenté; J'ai corrigé le lien pour pointer vers un exemple plus représentatif. Ce n'est pas un truc. c'est un [jeton de type] (http://stackoverflow.com/a/13673688/230513). – trashgod

2

Vous devrez obtenir DefaultTableCellRenderer pour les cellules du tableau et appeler setHorizontalAlignment (alignement).

Exemple se trouve sur les liens:

http://www.techrepublic.com/article/how-to-justify-data-in-a-jtable-cell/5032692/

http://www.coderanch.com/t/337549/GUI/java/align-data-columns-JTable

+0

+1 Je suis un peu méfiant des articles qui mal orthographient 'JTable', mais la barre latérale montre un exemple complet. :-) – trashgod

+0

classe RightTableCellRenderer extends DefaultTableCellRenderer { protected RightTableCellRenderer() { setHorizontalAlignment (JLabel.RIGHT); } J'ai ajouté ce code, après quoi comment puis-je définir le moteur de rendu à ma colonne jtable. } – Arivu2020

8

Essayez ceci:

JTable tbl = new JTable(3,3) { 
    DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer(); 

    { // initializer block 
     renderRight.setHorizontalAlignment(SwingConstants.RIGHT); 
    } 

    @Override 
    public TableCellRenderer getCellRenderer (int arg0, int arg1) { 
     return renderRight; 
    } 
}; 
+1

Je n'avais pas pensé à utiliser un bloc d'initialisation dans les classes anonymes. Résout le manque de constructeur, bien. – PeterVermont

+0

-1 pour court-circuiter tout le support pour la configuration du moteur de rendu fin de la table (en retournant un pour tous) Il n'y a pas besoin de sous-classe, utilisez plutôt API/table pour installer des moteurs de rendu personnalisés – kleopatra

23
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); 
rightRenderer.setHorizontalAlignment(JLabel.RIGHT); 
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer); 
+6

+1 pour une réponse correcte, juste: a) * NE PAS SHOUT * b) s'il vous plaît apprendre les conventions de nommage java et respectez-les (vous pouvez modifier votre réponse et corriger les deux) – kleopatra

+0

Je l'ai trouvé fonctionnel mais seulement partiellement. 1) Si vous définissez d'abord le rendu de colonne, puis le modèle, le modèle invalide le rendu déjà défini, faites-le 'null'. 2) J'utilise Nimbus L & F, et le moteur de rendu nouvellement défini change la couleur d'arrière-plan pour être incompatible avec les autres cellules. Je peux ouvrir une question à propos de ce problème. – FaithReaper