Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [java] Editiervorgang in jTable kontrollieren (https://www.delphipraxis.net/88693-%5Bjava%5D-editiervorgang-jtable-kontrollieren.html)

jfheins 19. Mär 2007 14:57


[java] Editiervorgang in jTable kontrollieren
 
Hallo,
Ich muss darf euch wieder nmit eine jjava-Frage quaelen :mrgreen:

Nachdem ich meine terminverwaltung einigermassen ferig bejommen habe, gibt es noch folgendes Problem:

Ich benutze eine jTable, um gewisse Eintraege bearbeitbar zu machen. Nun duerfen diese nicht ueber 300 Zeichen lang sein. Ausserdem moechte ich Datei und Tabelle synchron halten, also wird sofort nachm editiervorgang in die Datei geschrieben, und dann die Datei neu eingelesen.
Jetzt ist die Frage, was machen, wenn der (dummme) User mehr eingibt, als er darf? Ich moechte das gerne abfangen, ihn auf seine Dummheit hinweisen und dann seinen Cursor wieder in die Zelle setzen.

Folgenden Code habe ich probiert:
Code:
NotesModel().addTableModelListener(new TableModelListener()
        {
            public void tableChanged(TableModelEvent evt)
            {
                if (evt.getType() == evt.UPDATE)
                {
                    UpdateNotesFile(evt.getFirstRow());
                }
            }
        });

protected void UpdateNotesFile(int index)
    {
        if (((String) NotesModel().getValueAt(index, 1)).length() > 300)
        {
            NotesTable.editCellAt(NotesTable.getSelectedRow(), NotesTable.getSelectedColumn());
            //NotesTable.getSelectionModel().setSelectionInterval(index, index);
            JOptionPane.showMessageDialog(null, 'Sorry, you cannot exeed 300 characters.\nYou wrote: ' + ((String) NotesModel().getValueAt(index, 1)).length(), 'Error during update', JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            // Datei - update
        }
    }
(" durch ' ersetzt)

NotesTable ist die Tabelle (jTable) und NotesModel() liefert das model zurueck(nach DefaultTableModel gecasted)

Das Problem ist, dass das editCellAt(); wohl wieder ein Updata ausloest, woraufhin der User ununterbrochen die Meldung sieht, dass er zuviel eingegeben hat.

Wenn ich das editCellAt nur einmal aufrufe (mittels globaem Boolean Flag), dann wird die Zelle nur fokussiert, ich moechte sie aber beriet zum editieren haben.

Ideen?

P.S. java ist vorgeschrieben, und da Programm steht auch schon, also nix gegen Java bitte ;)

jfheins 20. Mär 2007 18:52

Re: [java] Editiervorgang in jTable kontrollieren
 
keiner ? :pale:

Ich habs inzwischen mit nem Inputdialog gelöst, ist aber nicht so schön ... :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz