2014年09月12日

[Java] JTble::何の細工もせず文字列以外の部品を置いてみる

何の細工もしないで、テーブルにラジオボタンやチェックボックス等、文字列以外のコンポーネントを配置しようとした場合にどうなるか・・・以下サンプル(Java version1.8)です。

レンダラは 以前作ったSampleTableCellRenderer02 を使ってます。


public class SampleJTable04Main extends JFrame {

private static final long serialVersionUID = -7554849460806351373L;

private static final String HEADER_TITLE[] = {"Column01", "Column02", "Column03", "Column04", "Column05"};

private JRadioButton radioButton = new JRadioButton("RadioButton");
private JCheckBox checkBox = new JCheckBox("CheckBox");
private JButton button = new JButton("Button");
private JComboBox<String> comboBox = new JComboBox<String>();


public static void main(String[] args) {
SampleJTable04Main sampleJTable01 = new SampleJTable04Main("SampleJTable02");

sampleJTable01.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sampleJTable01.setVisible(true);
}

SampleJTable04Main(String title){
this.setTitle(title);
this.setBounds(10, 10, 470, 120);

DefaultTableModel defaultTableModel = new DefaultTableModel(HEADER_TITLE, 5);

defaultTableModel.setValueAt(radioButton, 0, 0);
defaultTableModel.setValueAt(checkBox, 0, 1);
defaultTableModel.setValueAt(button, 0, 2);
defaultTableModel.setValueAt(comboBox, 0, 3);
defaultTableModel.setValueAt("あいうえお", 0, 4);

JTable jTable = new JTable(defaultTableModel);

JScrollPane jScrollPane = new JScrollPane(jTable);
jScrollPane.setPreferredSize(new Dimension(450, 70));

JPanel jPanel = new JPanel();
jPanel.add(jScrollPane);

this.add(jPanel, BorderLayout.CENTER);

// レンダラは以前作ったものを使用
jTable.setDefaultRenderer(Object.class, new SampleTableCellRenderer02());
}
}

実行結果
 わかりやすいように1列目だけ幅を広げてます。期待する部品は配置されず、文字列となって表示されてしまいました。
img20140912_01


期待する部品を置けるようにしたサンプルは次回・・・
いろいろ調べてますが、メンドイんですねぇ。。。
もっと簡単にできないものなんでしょうか。。。


コメントする

名前
 
  絵文字