18

我一直在寻找一种能够增加 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

4 回答 4

26

您可以使用:

table.setRowHeight(int par1);

或者,如果您想为特定行设置行高,请使用:

table.setRowHeight(int par1, int par2);

于 2013-04-06T17:14:12.357 回答
23

不确定将索引 0 处的第一行留空的目的是什么。从索引 0 开始运行的行。JTable最好发布一个完整的示例(即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();
            }
        });
    }
}
于 2013-04-06T18:19:27.190 回答
4

右键单击 JFrame 中的 JTable,然后单击属性。向下滚动并设置 rowHeight 值。

设置 rowHeight 值

于 2018-03-12T17:52:44.367 回答
2

你也可以添加一个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
            }
        });
    }
});
于 2013-04-06T17:40:33.510 回答