2013年09月10日(火) [長年日記]
■ [java] javax.swing.JTableの列幅を変更する
JTableで列幅を変更する方法がなかなかわからなかったのでメモ。
- JTable#getColumn() などで得られるTableColumnオブジェクトのsetPreferredWidth()を呼び出す
と列幅を変えられる。
- getColumn()の引数には、デフォルトでは列名を指定すればいいみたい。
- 特定の列に対してだけsetPreferredWidth()を呼び出すと思い通りの幅にならない。これはTableColumnオブジェクトのデフォルトの幅が75だからのようだ。
以下サンプル。
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class TableBuilder {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
showTable();
}
});
}
public static void showTable() {
JFrame frame = new JFrame();
frame.add(new JScrollPane(createTable()));
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
public static JTable createTable() {
JTable table = new JTable(2, 3);
table.getColumn("A").setPreferredWidth(50);
table.getColumn("B").setPreferredWidth(150);
table.getColumn("C").setPreferredWidth(200);
return table;
}
}

[ツッコミを入れる]