web-dev-qa-db-fra.com

Définir la hauteur d'une ligne dans une JTable en java

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?

11
Douglas Grealis

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: 

enter image description here

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();
            }
        });
    }
}
16
tenorsax

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);

16
madcrazydrumma

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
            }
        });
    }
});
2
madcrazydrumma

Cliquez avec le bouton droit sur JTable dans JFrame et cliquez sur Propriétés . Faites défiler la liste et définissez la valeur rowHeight.

 set rowHeight value

1
msl