JTable modifier la Colonne de la Police
Helo, j'ai cherché la réponse dans de nombreux endroits, mais je n'ai pas la solution, pouvez vous m'aider?
Je suis en train de faire une table où je veux faire de la première colonne avec une augmentation de la Taille de la Police.
Par exemple dans la colonne 0 je veux de la Taille de la Police de 30 et sur les colonnes 1-3 y veulent la Taille de Police du 13.
Voici mon code
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.*;
public class kanji_list extends JFrame {
kanji_list(){
JTable table = new JTable();
JScrollPane scroll = new JScrollPane();
Image icon = Toolkit.getDefaultToolkit().getImage("JLPT.jpg");
ImageIcon ima = new ImageIcon("JLPT.jpg");
DefaultTableModel model = new DefaultTableModel(get_data(), get_header());
table = new JTable(model){
public boolean isCellEditable(int rowIndex, int vColIndex){
return false;
}
};
JTableHeader th = table.getTableHeader();
TableColumnModel tcm = th.getColumnModel();
TableColumn column = null;
table.setFont(new Font("Microsoft JhengHei", Font.BOLD, 13));
for (int i = 0; i < 4; i++) {
column = table.getColumnModel().getColumn(i);
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
tcr.setHorizontalAlignment(SwingConstants.CENTER);
column.setCellRenderer(tcr);
if (i==0) {
column.setPreferredWidth(50);
}
else{
if(i==1){
column.setPreferredWidth(175);
}
else{
if(i==2){
column.setPreferredWidth(200);
}
else{
column.setPreferredWidth(875);
}
}
}
}
table.setRowHeight(table.getRowHeight()+30);
table.setModel(model);
scroll.add(table);
this.add(scroll);
this.setTitle("Katakana");
this.setSize(1350, 700);
this.setIconImage(icon);
this.setVisible(true);
this.setLocationRelativeTo(null);
scroll.setViewportView(table);
}
Object [][]get_data(){
Object data[][] = new Object[][]{
{"\u4e00", "Uno, 1", "ICHI, ITSU", "hito-, hitotsu"},
{"\u4e8c", "Dos, 2", "NI, JI", "futa, futatsu, futatabi"},
{"\u4e09", "Tres, 3", "SAN, JOU", "mi, mitsu, mittsu"},
{"\u99c5", "Estación", "EKI", ""}
};
return data;
}
String []get_header(){
String header [] = new String[]{"KANJI", "SIGNIFICADO", "LECTURA ON", "LECTURA KUN"};
return header;
}
}
C'est un Japonais, système d'apprentissage, et les Kanjis sur unicode sur la 1ère colonne ne sont pas visibles à tous avec mon 13 de la taille de la police, mais si je fais de la table sur une taille supérieure, toutes les autres colonnes de plus en plus grands et il n'a pas l'air bien.
Je suppose que j'ai expliqué mon problème.
Je l'ai essayé avec beaucoup d'idées différentes, mais je n'obtiens aucun résultat.
OriginalL'auteur Frakcool | 2013-04-19
Vous devez vous connecter pour publier un commentaire.
Core JTable en gros, vous avez besoin d'un custom moteur de rendu qui définit la Police de caractères à quelque chose de différent à partir de la table de caractères, f.j'. dans une sous-classe de DefaultTableCellRenderer. Notez que la définition de la police sur DefaultTableCellRenderer une fois après l'instanciation ne fonctionnera pas parce que c'est réinitialisée à chaque appel à getTableCellRendererComponent.
Une alternative est le moteur de rendu de décoration approche, pris en charge dans le SwingX projet (biaisée moi ne peut pas résister 🙂 Ensuite, le ci-dessus serait un deux-liner (en supposant que le tableau est de type JXTable):
table.getTableHeader().setFont(new Font(null, Font.PLAIN, 23));
rien de mal 🙂 Seulement qui n'a aucun rapport avec la question que je le comprends: c'est sur, colonne par colonne, de la police, qui est différente de la table de la police.
🙂 mon specificum est probablement pourquoi, pourquoi j'ai à lire ...
+1, Désolé, je n'ai même pas vu votre réponse. Je vais supprimer la mienne et la vôtre apparaît en premier.
J'ai essayé ceci, mais est allé de mal, je suis encore un étudiant à partir de java, pouvez-vous m'aider à obtenir ce code dans mon code? ou peut-être m'expliquer avec des mots simples, comment ça marche? car je ne comprend toujours pas très bien comment il fonctionne
OriginalL'auteur kleopatra