Hallo zusammen,
vor der Erklärung zunächst meine Ausgangssituation: Ich möchte in einem Table eine bestimmte Spalte editieren können, daraufhin soll via Listener eine andere andere Spalte + entsprechender Zeile automatisch mit einem Wert belegt werden. Code soweit:
Zu dem Table-Ctor: "TestTable.handleColumn" ist dabei die Methode, die aufgerufen werden soll, wenn sich die Tabelle ändert, d.h. die Methode handleColumn wird mittels Reflection aufgerufen:
So weit, so gut. Die handleColumn wird richtig aufgerufen, wenn die erste Spalte verändert wird. Hier die setTableValueAt aus der A4LTable:
Hier fängt das Problem an: Durch setValueAt wird jetzt wieder tableChanged aufgerufen, was wiederrum die handleColumn aufruft, sprich Endlosschleife.
Hier noch der tableChangedCode:
mMethod ist die handleColumn Methode.
Ich hoffe mein Problem wird deutlich. Danke schon mal im Voraus.
Grüße
StefanTmp
vor der Erklärung zunächst meine Ausgangssituation: Ich möchte in einem Table eine bestimmte Spalte editieren können, daraufhin soll via Listener eine andere andere Spalte + entsprechender Zeile automatisch mit einem Wert belegt werden. Code soweit:
Java:
static private void initDialog() throws Exception {
_mMainFrame = A4LFrame.createFrame("Frame", 600, 500);
_mTable = A4LTable.createTable(_mMainFrame, 5, 4, 100, 100, 300, 200, true, "TestTable.handleColumn");
A4LFrame.showFrame(_mMainFrame);
}
Zu dem Table-Ctor: "TestTable.handleColumn" ist dabei die Methode, die aufgerufen werden soll, wenn sich die Tabelle ändert, d.h. die Methode handleColumn wird mittels Reflection aufgerufen:
Java:
static public void handleColumn(String pSource) throws Exception {
int i = A4LTable.getTablesSelectedColumn(_mTable);
if ((i == 1)) {
A4LTable.setTableValueAt(_mTable, 0, i+1, "test");
}
}
Java:
static public void setTableValueAt(String pTableHandle, int pRow, int pColumn, String pObject) throws Exception {
if (!sContainer.getMMap().containsKey(pTableHandle)) {
throw new Exception("Handler-Error: " + pTableHandle
+ " is refers not a Table");
} else if (!(sContainer.getMMap().get(pTableHandle).getMObject() instanceof JTable)) {
throw new Exception("Handler-Error: " + pTableHandle
+ " is refers not a Table");
} else {
JTable lTable = (JTable) sContainer.getMMap().get(pTableHandle)
.getMObject();
lTable.setValueAt(pObject, pRow, pColumn);
}
}
Hier fängt das Problem an: Durch setValueAt wird jetzt wieder tableChanged aufgerufen, was wiederrum die handleColumn aufruft, sprich Endlosschleife.
Hier noch der tableChangedCode:
Java:
public void tableChanged(TableModelEvent arg0) {
try {
String lTableHandle = getHandle(arg0.getSource());
super.getMMethod().invoke(null, new Object[] { lTableHandle });
} catch (Exception ex) {
ex.printStackTrace();
}
}
mMethod ist die handleColumn Methode.
Ich hoffe mein Problem wird deutlich. Danke schon mal im Voraus.
Grüße
StefanTmp