Hallo zusammen,
ich habe eine JTable welche Dateien in einem bestimmten Ordner darstellt.
Das TableModel extended AbstractTableModel.
Beim Rechtsklick auf eine dieser Dateien im Tree öffnet sich ein JPopupMenu, welches u.A. die Auswahl "Rename" enthält.
Nun möchte ich beim Klick auf Rename die enstprechende Tabellenzelle editieren, aber editCellAt liefert immer false.
Das Model:
Die JTable in verkürzter Form:
Vielen Dank
ich habe eine JTable welche Dateien in einem bestimmten Ordner darstellt.
Das TableModel extended AbstractTableModel.
Beim Rechtsklick auf eine dieser Dateien im Tree öffnet sich ein JPopupMenu, welches u.A. die Auswahl "Rename" enthält.
Nun möchte ich beim Klick auf Rename die enstprechende Tabellenzelle editieren, aber editCellAt liefert immer false.
Das Model:
Java:
import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
import javax.swing.table.AbstractTableModel;
import de.ibm.com.opentm2testsuite.helpers.Configuration;
public class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private int cols = 2;
private int rows;
private File[] data;
public MyTableModel() {
updateModel();
}
public void updateModel() {
File dir = null;
dir = new File(
Configuration.getValueFromConfigurationFile("SCRIPTDIR"));
FilenameFilter select = new FileListFilter("", "xml");
this.data = dir.listFiles(select);
int row = 0;
for (int cnt = 0; cnt < data.length; cnt++) {
if (data[cnt].getAbsoluteFile().toString().endsWith(".xml")) {
row++;
}
}
this.rows = row;
}
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return this.cols;
}
@Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.rows;
}
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
if (arg1 == 0) {
return this.data[arg0].getName();
} else if (arg1 == 1) {
return new Date(this.data[arg0].lastModified());
} else {
return "";
}
}
class FileListFilter implements FilenameFilter {
private String name;
private String extension;
public FileListFilter(String name, String extension) {
this.name = name;
this.extension = extension;
}
public boolean accept(File directory, String filename) {
boolean fileOK = true;
if (name != null) {
fileOK &= filename.startsWith(name);
}
if (extension != null) {
fileOK &= filename.endsWith('.' + extension);
}
return fileOK;
}
}
}
Die JTable in verkürzter Form:
Java:
public TestSuiteTable(CreateTestSuitePanel pCTSP) {
this.parent = pCTSP;
this.tabModel = new MyTableModel();
this.setModel(this.tabModel);
this.getColumnModel().getColumn(0).setHeaderValue("File");
this.getColumnModel().getColumn(1).setHeaderValue("Last Modified");
this.addMouseListener(new DoubleClickListener(this));
}
public void RenameSelectedScript() {
this.editCellAt(this.getSelectedRow(), 1);
//this.getEditorComponent().requestFocusInWindow();
boolean toggle = false;
boolean extend = false;
this.changeSelection(this.getSelectedRow(), this.getSelectedColumn(),
toggle, extend);
}
Vielen Dank
Zuletzt bearbeitet von einem Moderator: