Je cherchais une solution pour pouvoir augmenter la hauteur d'une ligne dans une table JTable. J'utilise la méthode setRowHeight (int int) qui compile et s'exécute correctement, mais aucune ligne [s] n'a été augmentée. Lorsque j'utilise la méthode getRowHeight (int) de la ligne sur laquelle j'ai défini la hauteur, elle affiche la taille à laquelle j'ai augmenté la ligne. Je ne suis donc pas sûr de ce qui ne va pas. Le code ci-dessous est une illustration approximative de la façon dont je tente de le résoudre.
Ma classe s'étend à JFrame.
String[] columnNames = {"Column 1", "Column 2", "Column 1 3"};
JTable table = new JTable(new DefaultTableModel(columnNames, people.size()));
DefaultTableModel model = (DefaultTableModel) table.getModel();
int count =1;
for(Person p: people)
{
model.insertRow(count,(new Object[]{count, p.getName(), p.getAge()+"",
p.getNationality}));
count++;
}
table.setRowHeight(1, 15);//Try set height to 15 (I've tried higher)
Quelqu'un peut-il me dire où je me trompe? J'essaie d'augmenter la hauteur de la rangée 1 à 15 pixels?
Vous ne savez pas quelle est l'intention de laisser la première ligne de l'index 0 vide. Les lignes dans JTable
commencent à partir de l'index 0. Il est préférable de poster un exemple complet (par exemple, SSCCE ) illustrant les problèmes. Comparez à cet exemple simple qui fonctionne bien:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class DemoTable {
private static void createAndShowGUI() {
JFrame frame = new JFrame("DemoTable");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(new Object[] {
"Column 1", "Column 2", "Column 3" });
JTable table = new JTable(model);
for (int count = 0; count < 3; count++){
model.insertRow(count, new Object[] { count, "name", "age"});
}
table.setRowHeight(1, 30);
frame.add(new JScrollPane(table));
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Vous pouvez utiliser:
table.setRowHeight(int par1);
ou si vous souhaitez définir la hauteur de la ligne pour une ligne spécifique, utilisez:
table.setRowHeight(int par1, int par2);
Vous pouvez également ajouter un tableModelListener?
model.addTableModelListener(new TableModelListener() {
@Override public void tableChanged(final TableModelEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
table.setRowHeight(e.getFirstRow(), 15); //replace 15 with your own height
}
});
}
});