Question Définition de la hauteur d'une ligne dans une table JTable en Java


J'ai cherché une solution pour pouvoir augmenter la hauteur d'une ligne dans une JTable. J'ai utilisé la méthode setRowHeight (int int) qui compile et exécute OK, mais aucune ligne 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 imprime la taille à laquelle j'ai augmenté la ligne, donc je ne suis pas sûr de ce qui ne va pas. Le code ci-dessous est une illustration approximative de la manière dont je tente de le résoudre.

Ma classe é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 vais mal? J'essaie d'augmenter la hauteur de la ligne 1 à 15 pixels?


11
2018-04-06 17:10


origine


Réponses:


Vous ne savez pas quelle est l'intention de laisser la première ligne à l'index 0 vide. Rangées JTable exécuter à partir de l'index 0. Il est préférable de publier un exemple complet (c.-à-d. SSCCE) qui illustre 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();
            }
        });
    }
}

15
2018-04-06 18:19



Vous pouvez utiliser:

table.setRowHeight(int par1);

ou si vous souhaitez définir la hauteur de ligne pour une ligne spécifique, utilisez:

table.setRowHeight(int par1, int par2);


15
2018-04-06 17:14



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
2018-04-06 17:40



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

set rowHeight value


0
2018-03-12 17:52