W
winter2
Gast
Ich habe ein Problem mit einer JTable in einem Applet:
es läuft zunächst alles einwandfrei, aber standardmäßig können die Zellen einer JTable editiert werden. Das möchte ich in diesem Fall unbedingt verhindern, da nur gesucht werden soll und die Werte auch später noch ausgelesen werden (eigentlich müßte dann doch auch verhinert werden, daß Spalten verschoben werden können).
Ich bin auf fokgende Idee gekommen:
Ich überlagere die Methode
public boolean isCellEditable(int x, int y) { return false; }
Dann ist die Tabelle zwar nicht mehr editierbar, aber bei der Navigation in der Tabelle stürzt das Applet entweder ab oder es dauert sehr lange, bis das Applet wieder auf Bnutzereingaben reagiert.
Die wichtigsten Teile des Codes sind wie folgt:
Weiß jemand Rat? /* Anmerkung: die Sache mit den ganzen statischen Variablen sind nicht von mir, liegt einfach daran, daß bestimmte Codeteile in eigene Klassen ausgegliedert wurden, die von dieser abgeleitet sind, damit diese dann auf den gleichen Variablen operieren können. Ich hätte es auch nicht so gemacht! */
es läuft zunächst alles einwandfrei, aber standardmäßig können die Zellen einer JTable editiert werden. Das möchte ich in diesem Fall unbedingt verhindern, da nur gesucht werden soll und die Werte auch später noch ausgelesen werden (eigentlich müßte dann doch auch verhinert werden, daß Spalten verschoben werden können).
Ich bin auf fokgende Idee gekommen:
Ich überlagere die Methode
public boolean isCellEditable(int x, int y) { return false; }
Dann ist die Tabelle zwar nicht mehr editierbar, aber bei der Navigation in der Tabelle stürzt das Applet entweder ab oder es dauert sehr lange, bis das Applet wieder auf Bnutzereingaben reagiert.
Die wichtigsten Teile des Codes sind wie folgt:
Code:
public class indexApplet extends JApplet {
[...]
String[] indexHeader = {"Datei", "Patient", "Autor", "Dokumenttyp", "Datum", "ID", "Location"};
DefaultTableModel noIndexModel = new DefaultTableModel(indexHeader, 1);
static protected JTable dbFound;
public void init() {
[...]
/* jetzt folgt die neu eingefügte Anweisung, die die Probleme macht /*
dbFound = new JTable() {
public boolean isCellEditable(int x, int y) {
return false;
}
};
/* auch mit = new JTable(null) { ... oder mit = new JTable(noIndexModel) { ..., dieses statisch, geht es nicht */
dbFound.setModel(noIndexModel);
dbFound.getSelectionModel().addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent lse) {
if (bildAusgewaehlt(noIndexModel.getValueAt(dbFound.getSelectedRow(), 6).toString())) displayPreview(lse);
else jLabel12.setIcon(null);
}
});
[...]
jScrollPane5.getViewport().add(dbFound, null);
}
[...]
}
Weiß jemand Rat? /* Anmerkung: die Sache mit den ganzen statischen Variablen sind nicht von mir, liegt einfach daran, daß bestimmte Codeteile in eigene Klassen ausgegliedert wurden, die von dieser abgeleitet sind, damit diese dann auf den gleichen Variablen operieren können. Ich hätte es auch nicht so gemacht! */