Come centrare le celle in JTable

Sto avendo un problema specifico con il mio codice.

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.*; import java.awt.Color; class ver_his_sign extends JFrame { ver_his_sign() { JTable table = new JTable(); JScrollPane scroll = new JScrollPane(); DefaultTableModel model = new DefaultTableModel(get_data(), get_header()); JFrame hk = new JFrame("Historial de Significados"); Image icon = Toolkit.getDefaultToolkit().getImage("JLPT.jpg"); ImageIcon ima = new ImageIcon("JLPT.jpg"); table = new JTable(model) { public boolean isCellEditable(int row, int col) { switch (col) { case 0: return false; case 1: return false; case 2: return true; default: return false; } } @Override public Class getColumnClass(int column) { switch (column) { case 0: return String.class; case 1: return String.class; case 2: return Boolean.class; default: return Boolean.class; } } }; table.setFont(new Font("Microsoft JhengHei", Font.BOLD, 13)); // a custom renderer which uses a special font DefaultTableCellRenderer r = new DefaultTableCellRenderer() { Font font = new Font("Microsoft JhengHei", Font.BOLD, 50); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setFont(font); setForeground(Color.blue); return this; } }; table.getColumnModel().getColumn(0).setCellRenderer(r); TableColumn column = null; DefaultTableCellRenderer tcr = new DefaultTableCellRenderer(); tcr.setHorizontalAlignment(JLabel.CENTER); DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) table.getDefaultRenderer(Object.class); defaultRenderer.setHorizontalAlignment(JLabel.CENTER); defaultRenderer.setFont(new Font("Microsoft JhengHei", Font.BOLD, 50)); tcr.setFont(new Font("Microsoft JhengHei", Font.BOLD, 50)); for (int i = 0; i < 3; i++) { column = table.getColumnModel().getColumn(i); if (i == 0) { column.setPreferredWidth(200); } else { if (i == 1) { column.setPreferredWidth(100); } else { column.setPreferredWidth(300); } } } table.setRowHeight(table.getRowHeight() + 70); table.setModel(model); scroll.add(table); this.add(scroll); this.setTitle("Historial de Significados"); this.setSize(1350, 700); this.setIconImage(icon); this.setVisible(true); this.setLocationRelativeTo(null); scroll.setViewportView(table); } Object[][] get_data() { Object data[][] = new Object[][]{ {"Uno, 1", "\u4e00", true}, {"Uno, 1", "\u4e01", true}, {"Uno, 1", "\u4e02", true}, {"Uno, 1", "\u4e03", true}, {"Uno, 1", "\u4e04", true} }; return data; } String[] get_header() { String header[] = new String[]{"KANJI", "SIGNIFICADO", "Agregar"}; return header; } } 

Poi succede ciò che appare sull’immagine. Ho bisogno che la colonna Kanji sia allineamento CENTER, ma per qualche ragione DefaultTableCellRenderer , `tcr, non funziona come dovrebbe, ma il renderer predefinito lo sta facendo come dovrebbe essere.

Qualche suggerimento / aiuto?

inserisci la descrizione dell'immagine qui