# JTable text zentriert darstellen



## Marco_adv (30. Jul 2007)

Hallo zusammen,

ich suche einmöglichkeit den text einer tabellenspalte zentriert darzustellen.
Ich habe bereits ein eigenes TableModel implementiert und die 4 spalte soll eben zentriert angezeigt werden jemand ne Ahnung.

Vielen Dank
Marco


----------



## P3AC3MAK3R (30. Jul 2007)

http://forum.java.sun.com/thread.jspa?forumID=57&threadID=419688


----------



## Marco_adv (30. Jul 2007)

Danke hat weiter geholfen nur schade dass ich dafür auch nen tablecellrender implementieren muss


----------



## André Uhres (2. Aug 2007)

Marco_adv hat gesagt.:
			
		

> ..nur schade dass ich dafür auch nen tablecellrender implementieren muss


Musst du nicht unbedingt:

```
package table;
/*
 * CenterTextDemo.java
 */
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class CenterTextDemo extends JFrame {
    private JTable table;
    public CenterTextDemo() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        table = new JTable(){
            //prepareRenderer überschreiben:
            @Override public Component prepareRenderer(final TableCellRenderer renderer, 
                    final int row, final int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                if(c instanceof JLabel){
                    JLabel label = (JLabel)c;
                    label.setHorizontalAlignment(JLabel.LEFT);
                    if(column == 3) label.setHorizontalAlignment(JLabel.CENTER);
                }
                return c;
            }
        };
        //TableModel:
        table.setModel(new DefaultTableModel(
                new Object [][] {{"left", "left", "left", "center"}},
                new String [] {"Title 1", "Title 2", "Title 3", "Title 4"}
        ) {
            Class[] types = new Class [] {String.class, String.class, String.class, String.class};
            public Class getColumnClass(final int columnIndex) {return types [columnIndex];}
        });
        getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
        pack();
    }
    public static void main(final String args[]) {new CenterTextDemo().setVisible(true);}
}
```


----------



## dimitrif (5. Aug 2007)

Hallo,

ich hätte mal eine Frage, bei mir funktioniert nicht, dass was Sie vorgeschlagen haben. Vielleicht können Sie mir helfen? Mein Code sieht so aus:



```
private void initComponents1() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Titel 1", "Titel 2", "Titel 3", "Titel 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(15, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(14, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>*/
```

Wo kann ich hier setHorizontalAlignment(JLabel.CENTER) einfügen?

Vielen Dank[/code]


----------



## André Uhres (6. Aug 2007)

In NetBeans findest du im Design Modus bei den JTable Properties die Buttons "Properties, Events, Code".
Dort klickst du  auf den Button "Code" und dann bei "Custon Creation Code" auf den kleinen Button [...] ganz rechts.
Dann erscheint ein Dialog mit einer Textbox "Insert Code:"
Dort fügst du dies ein:

```
new javax.swing.JTable(){
            //prepareRenderer überschreiben:
            @Override public Component prepareRenderer(final TableCellRenderer renderer,
            final int row, final int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                if(c instanceof javax.swing.JLabel){
                    javax.swing.JLabel label = (javax.swing.JLabel)c;
                    label.setHorizontalAlignment(javax.swing.JLabel.LEFT);
                    if(column == 3) label.setHorizontalAlignment(javax.swing.JLabel.CENTER);
                }
                return c;
            }
        };
```
um den Text in der vierten Spalte zu zentrieren (als Beispiel).


----------

