我一直在寻找能够增加JTable中行高的解决方案。我一直在使用setRowHeight(int int)方法编译并运行OK,但没有增加row [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像素?
答案 0 :(得分:18)
不确定将索引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();
}
});
}
}
答案 1 :(得分:16)
您可以使用:
table.setRowHeight(int par1);
或者如果要为特定行设置行高,请使用:
table.setRowHeight(int par1, int par2);
答案 2 :(得分: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
}
});
}
});
答案 3 :(得分:1)