Я использую интерактивную JTable на основе кода здесь .
Мне нужно, чтобы после двойного щелчка для редактирования ячейки,
Если щелкнуть правой кнопкой мыши, откроетсяВыбор файла для выбора файла
, иначе просто введите путь вручную после двойного щелчка по всем ячейкам в первом столбце.
Я добавил
TableColumn waweletFileColumn = table.getColumnModel().getColumn(InteractiveTableModel.TITLE_INDEX );
waweletFileColumn.setCellEditor(new FileChooserCellEditor());
в интерактивную таблицу, чтобы изменить поведение ячеек.
public class FileChooserCellEditor extends DefaultCellEditor implements TableCellEditor {
/** Editor component */
private JTextField tf;
/** Selected file */
private String file = "";
private String type;
/**
* Constructor.
*/
public FileChooserCellEditor(String type) {
super(new JTextField());
this.type = type;
// Using a JButton as the editor component
tf = new JTextField();
tf.setBorder(null);
}
@Override
public Object getCellEditorValue() {
return file;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
file = myFileChooser(type);
fireEditingStopped();
tf.setText(file);
return tf;
}
public static String myFileChooser() {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory( new File(System.getProperty("user.home"));
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
chooser.setDialogTitle("Choose" );
chooser.setAcceptAllFileFilterUsed(true);
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
direct = chooser.getSelectedFile();
return chooser.getSelectedFile().toString();
}
return "";
}
}
Но как я могу изменить код, чтобы открытьВыбор файла, если щелкнуть правой кнопкой мыши и в противном случае вести себя как обычное текстовое поле?