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; } }