JTable 内に入る新しいコンポーネントを作成しようとしています。クリックすると JFileChooser が生成される JTextfield で構成されているため、ユーザーはファイル システムを参照して必要なファイルを選択し、そのファイルへのパスをフィールドに入力できます。これまでのところ、エディターでテキスト フィールドを入力できるところまで来ましたが、クリックしても FilecChooser が表示されません。ここで私が間違っていることを知っている人はいますか?
public class FileBrowserCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
private static final long serialVersionUID = 1L;
private Component frame;
JButton button;
JTextField textField;
String path;
JFileChooser fc;
protected static final String EDIT = "edit";
public FileBrowserCellEditor(Component frame){
this.frame = frame;
textField = new JTextField();
textField.setActionCommand(EDIT);
textField.addActionListener(this);
fc = new JFileChooser();
}
@Override
public Object getCellEditorValue() {
return path;
}
@Override
public Component getTableCellEditorComponent(JTable arg0, Object arg1,
boolean arg2, int arg3, int arg4) {
return textField;
}
@Override
public void actionPerformed(ActionEvent e) {
//Debug
System.out.println(e.getActionCommand());
if (EDIT.equals(e.getActionCommand())) {
//The user has clicked the cell, so
//bring up the dialog.
textField.setText(path);
fc.showOpenDialog(frame);
fireEditingStopped(); //Make the renderer reappear.
} else { //User pressed dialog's "OK" button.
//currentColor = colorChooser.getColor();
File file = fc.getSelectedFile();
this.path = file.getAbsolutePath();
}
}
}