Установка высоты строки в JTable в java
Я искал решение, чтобы иметь возможность увеличить высоту строки в jtable. Я использую метод setRowHeight (int int), который компилируется и работает нормально, но ни одна строка[s] не была увеличена. Когда я использую метод getRowHeight(int) строки, для которой я установил высоту, он распечатывает размер, к которому я увеличил строку, поэтому я не уверен, что не так. Приведенный ниже код является примерной иллюстрацией того, как я пытаюсь его решить.
мой класс расширяет 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)
может ли кто-нибудь сказать мне, где я ошибаюсь? Я пытался увеличить высоту строки 1 до 15 пикселей?
4 ответов
не уверен, что намерение оставить первую строку в индексе 0 пустой. Строки JTable выполнить из индекса 0. Лучше всего, если вы можете опубликовать полный пример (т. е. SSCCE), который демонстрирует проблемы. Сравните с этим простым примером, который работает нормально:

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();
            }
        });
    }
}
Вы можете использовать:
table.setRowHeight(int par1);
или если вы хотите установить высоту строки для конкретной строки, использовать:
table.setRowHeight(int par1, int par2);
вы также можете добавить 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
            }
        });
    }
});
щелкните правой кнопкой мыши на JTable в JFrame и выберите Свойства. Прокрутите вниз и установите значение rowHeight.
 
            