[JAVA] JTable - data uitlezen uit niet geüpdate cell

Pagina: 1
Acties:

  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 16-11 19:19
Ik heb een JTable in een frame gezet, waar data in gezet kan worden en waarbij dmv een JButton de ingevulde data uit de tabel weggeschreven/verwerkt wordt.

Mijn probleem is dat als in cell x,y een waarde wordt ingevuld, men eerst een lege cell moet selecteren voordat de waarde in de tabel wordt opgeslagen (en dus kan worden gelezen). Als men nietsvermoedend na het invullen van de cell op de Verwerk-knop drukt.. wordt de data uit die cell niet automatisch opgeslagen en kan deze niet worden uitgelezen.

Is er een goede manier om de data uit te lezen van een cell die dus nog niet geüpdate is? Dit lijkt me iets wat regelmatig voorkomt, maar kan er met google niet echt veel op vinden.

  • Teun_2
  • Registratie: Oktober 2003
  • Laatst online: 14-11 07:36
Ik snap je vraag niet zo goed. Kan je ze herformuleren?

[ Voor 14% gewijzigd door Teun_2 op 25-05-2008 22:59 ]


  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 16-11 19:19
Uiteraard.

Een cell update pas als hij weer wordt gedeactiveerd, als ik data in een cell zet, en dan gelijk op een button, blijft de cell actief en wordt de data niet in de table opgeslagen. Probleem is dan dat de data van de laatst ingevulde cell niet wordt meegenomen in de verwerking omdat deze simpelweg nog op null staat.

Verwijderd

Ben geen Java man, maar kun je niet op de OnClick van die button als eerste de OnExit van de actieve cell aanroepen? (of zo, ik gebruikte Delphi termen)

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 29-10 20:56

Macros

I'm watching...

Kan je op de cell niet een focus listener plaatsen die luistert op de lost focus event?

"Beauty is the ultimate defence against complexity." David Gelernter


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:06

Robtimus

me Robtimus no like you

Java:
1
2
3
4
5
6
7
8
9
// table is de reference naar je JTable
TableCellEditor editor = table.getCellEditor();
if (editor != null)
{
    if (!editor.stopCellEditing())
    {
        editor.cancelCellEditing();
    }
}

Als het stoppen niet lukt (bv omdat de data niet geldig is, zoals niet-numerieke data voor een Integer veld) dan wordt het editen gecancelled, en wordt de oude waarde teruggezet.

Nu kun je deze code toevoegen aan het begin van je button's ActionListener's actionPerformed, of in een FocusListener die je aan je CellEditor of misschien zelfs je JTable kan hangen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Teeno
  • Registratie: Juni 2007
  • Laatst online: 16-11 19:19
IceManX schreef op maandag 26 mei 2008 @ 11:06:
Java:
1
2
3
4
5
6
7
8
9
// table is de reference naar je JTable
TableCellEditor editor = table.getCellEditor();
if (editor != null)
{
    if (!editor.stopCellEditing())
    {
        editor.cancelCellEditing();
    }
}

Als het stoppen niet lukt (bv omdat de data niet geldig is, zoals niet-numerieke data voor een Integer veld) dan wordt het editen gecancelled, en wordt de oude waarde teruggezet.

Nu kun je deze code toevoegen aan het begin van je button's ActionListener's actionPerformed, of in een FocusListener die je aan je CellEditor of misschien zelfs je JTable kan hangen.
_/-\o_ Duizendmaal dank, ziet er goed uit zo... ik kan weer verder.
Pagina: 1