fadi Geschrieben 28. August 2000 Teilen Geschrieben 28. August 2000 Moin, ich habe ein merkwürdiges Phänomen: In einer einspaltigen Tabelle kann per Button einen neuen Eintrag erstellen. Diesem Eintrag kann man dann direkt in der Liste einen Namen geben. Das ganze läuft ungefähr so: Dem Button habe ich einen ActionListener hinzugefügt myBtn.addActionListener(new ActionListener() { actionPerformed(ActionEvent e) { TableCellEditor newEditor = myTbl.getCellEditor(...) newEditor.addCellEditorListener(new CellEditorListener() { editingCanceled(ChangeEvent e){...} editingStopped(ChangeEvent e){...} }); } }); In dem editingStopped trage ich den neuen Eintrag in meinen Datenvector ein und aktualisiere das Datenmodell hinter der Tabelle (zwei verschieden Vectoren). Wenn ich während einer Prgorammsitzung einen neuen Eintrag hinzufüge, wird er beim ersten Mal 1x, beim zweiten Mal 2x usw. hinzugefügt. Er läuft auch entsprechend oft in die editingStopped hinein. Kann mir jemand erklären weshalb? fadi [Dieser Beitrag wurde von fadi am 28. August 2000 editiert.] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fadi Geschrieben 28. August 2000 Autor Teilen Geschrieben 28. August 2000 Problem gelöst Das folgende tut, was es tun soll. m_btnNew.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { materialListItem mliDummy = new materialListItem(); mliDummy.setName(szDummyEntry); int nPos = EngineManager.recorder.m_pnListe.addItem(mliDummy, -1); EngineManager.recorder.m_pnListe.updateTableModel(); EngineManager.recorder.m_pnListe.m_tblMaterial.setRowSelectionInterval (nPos , nPos); EngineManager.recorder.m_pnListe.myModel.setRowToEdit(nPos); boolean b = EngineManager.recorder.m_pnListe.m_tblMaterial.editCellAt(nPos, 0); Component comp = (Component)EngineManager.recorder.m_pnListe.m_tblMaterial.getEditorComponent(); ((JTextField)comp).selectAll(); ((JTextField)comp).setCaretPosition(szDummyEntry.length()); comp.requestFocus(); EngineManager.recorder.m_pnListe.m_tblMaterial.getCellEditor().addCellEditorListener(new CellEditorListener() { public void editingCanceled(ChangeEvent e) { //dev String szDebug = "editingCanceled"; String szDebugTitle = "Debug"; JOptionPane.showMessageDialog(null, szDebug, szDebugTitle, JOptionPane.INFORMATION_MESSAGE); //dev ende } public void editingStopped(ChangeEvent e) { int nRow = EngineManager.recorder.m_pnListe.m_tblMaterial.getEditingRow(); if (EngineManager.recorder.m_pnListe.myModel.isCellEditable(nRow, 0)) { EngineManager.recorder.m_pnListe.myModel.setRowToEdit(-1); TableCellEditor tblEditor = EngineManager.recorder.m_pnListe.m_tblMaterial.getCellEditor(); String szConfigKey = EngineManager.recorder.curConfig.getValidKey(); materialListItem mli = (materialListItem)EngineManager.recorder.m_pnListe.getItem(nRow); String szValue = (String)tblEditor.getCellEditorValue(); mli.setName(szValue); mli.setConfigKey(szConfigKey); EngineManager.recorder.m_pnListe.addItem(mli, nRow); EngineManager.recorder.m_pnListe.updateTableModel(); } }//editingStopped });//CellEditorListener }//actionPerformed });//ActionListener Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TG Geschrieben 29. August 2000 Teilen Geschrieben 29. August 2000 Siehste geht ja doch!!!! :-))) ------------------ Bis dann, Ciao! TG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fadi Geschrieben 29. August 2000 Autor Teilen Geschrieben 29. August 2000 @TG: Hab ja auch nie gesagt, daß es nicht geht, aber es ist superumständlich. Und alles nur, um im Look&Feel zu bleiben. I HATE IT! fadi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 29. August 2000 Teilen Geschrieben 29. August 2000 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">Zitat:</font><HR>Original erstellt von fadi: Problem gelöst m_btnNew.addActionListener(new ActionListener() {.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fadi Geschrieben 29. August 2000 Autor Teilen Geschrieben 29. August 2000 Meinst Du die erste öffnende runde Klammer zwischen addActionListener und new? m_btnNew.addActionListener(new ActionListener() { actionPerformed(ActionEvent e) { ... } }); Die wird ganz am Ende hinter der geschweiften Klammer geschlossen. Hab ich auch nur so aus den Sun-Tutorials übernommen. Gefressen hat's javac und läuft und läuft und läuft . Jetzt kommt die kontextsensitive Hilfe fadi [Dieser Beitrag wurde von fadi am 29. August 2000 editiert.] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 29. August 2000 Teilen Geschrieben 29. August 2000 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">Zitat:</font><HR>Original erstellt von fadi: Meinst Du die erste öffnende runde Klammer zwischen addActionListener und new? m_btnNew.addActionListener(new ActionListener() { actionPerformed(ActionEvent e) { ... } }); B] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fadi Geschrieben 29. August 2000 Autor Teilen Geschrieben 29. August 2000 Moin Uli, das ist ein ganz dreckiger Trick Es handelt sich um eine sogenannte anonyme Klasse. Dieser Codeauszug, denn ich gepostet habe, kommt aus dem Konstruktors meiner Klasse. Ich habe auch mehrere Class-Dateien, die aus der einen Java-Datei erzeugt werden. Mehr Infos dazu gibt es unter http://www.java.sun.com/docs/books/tutorial/java/javaOO/nested.html fadi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 29. August 2000 Teilen Geschrieben 29. August 2000 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">Zitat:</font><HR>Original erstellt von fadi: das ist ein ganz dreckiger Trick Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fadi Geschrieben 29. August 2000 Autor Teilen Geschrieben 29. August 2000 Moin, stimmt, Du hast recht. Wie Du merkst, habe ich mit diesem Konzept und den dazugehörigen Begrifflichkeiten auch noch leichte Probleme. Die URL unten verweist auf eine Seite weiter im Sun-Tutorial, dort im unteren Teil gibt es einen Absatz über anonyme Klassen. http://www.java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html fadi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 29. August 2000 Teilen Geschrieben 29. August 2000 Hi nochmal, jau, den Abschnitt ueber anonyme Klassen hab ich spaeter noch entdeckt. Da steht dann auch, dass man die moeglichst sparsam verwenden sollte. Wie auch immer, ich werde nachher nochmal in meinen Unterlagen blaettern. Laesst mich irgendwie nicht ganz kalt, das Problemchen. Muss man wohl ganz haarklein aufschluesseln, damit es klar wird. ciao Uli ------------------ Uli's Prüfungspage ... die Seite mit den Prüfungshinweisen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.