[java] jtable updaten met een tablelistener

Pagina: 1
Acties:

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Ik probeer een jtable te updaten met een tablelistener, maar dit lukt niet echt. Ik word maar niet wijzer uit de handleiding hoe ik deze moet implementeren, en de voorbeelden helpen ook niet echt.

Ik gebruik een TableModel. Maar hoe en waar moet ik de tablemodellistener nou neerzetten zodat veranderingen zichtbaar worden?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

dat doe je niet via de tablelistener :) Daarmee kun je zelf luisteren naar veranderingen. momentje.. ik zoek het even op
*is geen JTable fan*

hier is een handleiding:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op dinsdag 22 januari 2002 09:42 schreef Alarmnummer het volgende:
dat doe je niet via de tablelistener :) Daarmee kun je zelf luisteren naar veranderingen. momentje.. ik zoek het even op
*is geen JTable fan*

hier is een handleiding:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
die handleiding zat ik ook al door te lezen... :Z :Z
need caffeine :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

en je moet deze ook even bekijken :)

http://java.sun.com/j2se/1.4/docs/api/javax/swing/table/AbstractTableModel.html
need caffeine
ik ook.. percentage bloed in mijn aderen is nog te hoog :)

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
A table and its model automatically detect whenever the user edits the table's data. However, if the data changes for another reason, you must take special steps to notify the table and its model of the data change. Also, if you don't implement a table model, as in SimpleTableDemo, then you must take special steps to find out when the user edits the table's data.
An example of updating a table's data without directly editing it is in the BINGO application. The BINGO application, which is presented in BINGO!, has a table that displays some information about each user who is signed up to play the game. When a new user signs up to play BINGO, the table needs to add a new row for that user. More precisely, the table model needs to get the data for the new user, and then the table model needs to tell the table to display the new data.
volgens mij moet ik wel die tablemodellistener hebben. ik moet data die ik inlees van een jdbc bron plaatsen in de datamodel. (dat lukt) maar nu nog in de jtable de veranderingen doorvoeren.. :?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet gewoon even eigen TableModel schrijven die extends van de AbstractTableModel/DefaultTableModel. Als er een verandering optreed dan word dus de inhoud van je tablemodel aangepast. Daarna roep je even een eigenTableModel.fireHuppeldepup (afhankelijk van wat er aangepast moet worden). En de JTable die krijgt bericht door van zijn eigen table model (jouw model) en gaat dan de wijzigingen visualiseren.

Je hoeft niet zelf met Listeners aan de slag :)

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op dinsdag 22 januari 2002 09:56 schreef Alarmnummer het volgende:
Je moet gewoon even eigen TableModel schrijven die extends van de AbstractTableModel/DefaultTableModel. Als er een verandering optreed dan word dus de inhoud van je tablemodel aangepast. Daarna roep je even een eigenTableModel.fireHuppeldepup (afhankelijk van wat er aangepast moet worden). En de JTable die krijgt bericht door van zijn eigen table model (jouw model) en gaat dan de wijzigingen visualiseren.

Je hoeft niet zelf met Listeners aan de slag :)
hmmz eigen tablemodel heb ik al... zal es ff zien..
fireTableChanged ofzo?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

voorbeeld tablemodel
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
 * Een TableNodel waarin een lijst met variablen komt te staan.
 *
 * @author Peter Veentjer
 */
package com.jph.expertSysteem.editor.info.variableList;

import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

import com.jph.expertSysteem.*;
import com.jph.expertSysteem.treeItems.variables.*;

final class VariableListTableModel extends AbstractTableModel
{
    private final String[] columnNames = {"Type","Name"};
    public final static int TYPE_INDEX=0;
    public final static int NAME_INDEX=1;
    
    private Vector   vector=null;

    public VariableListTableModel(Vector vector)
    {
        this.vector = vector;
    }

    public int getRowCount()
    {
        return vector.size();
    }

    public int getColumnCount()
    {
           return columnNames.length;
    }

    public String getColumnName(int column)
    {
        return columnNames[column];
    }

    public boolean isCellEditable(int nRow, int nCol)
    {
        return false;
    }

    public Object getValueAt(int nRow, int nCol)
    {
        if (nRow < 0 || nRow >= getRowCount())
            return "";

        Variable variable = (Variable)vector.elementAt(nRow);
        Object answer = null;
        switch (nCol)
        {
            case TYPE_INDEX:
                answer = variable.getType().getName();
                break;
            case NAME_INDEX:
                answer = variable.getName();
                break;
            default:
                answer = "should not happen";
         }
        
        return answer;
    }
}

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op dinsdag 22 januari 2002 09:58 schreef Scorpion het volgende:

[..]

hmmz eigen tablemodel heb ik al... zal es ff zien..
fireTableChanged ofzo?
fireTableDataChanged() is wel een hele boerenkinkelmethode :) Je loopt te veel opnieuw te renderen dus de JTable wordt een stuk trager. Je kunt beter even kijken wat er nu gebeurd is, row verwijderd/toegevoegd column verwijderd/toegevoegd cell gewijzigd etc etc.. Dan ga je alleen tekenen wat veranderd is.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op dinsdag 22 januari 2002 09:58 schreef Alarmnummer het volgende:
voorbeeld tablemodel
code:
1
 ..
zover ben ik ook nog wel, maar veranderingen krijg ik niet op het scherm...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op dinsdag 22 januari 2002 10:07 schreef Scorpion het volgende:

[..]

zover ben ik ook nog wel, maar veranderingen krijg ik niet op het scherm...
Zelfs hier niet mee? :fireTableDataChanged() Heb je trouwens al gechecked dat je model ook daadwerkelijk veranderd is?

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op dinsdag 22 januari 2002 10:09 schreef Alarmnummer het volgende:

[..]

Zelfs hier niet mee? :fireTableDataChanged() Heb je trouwens al gechecked dat je model ook daadwerkelijk veranderd is?
ik maak de JTable aan, met TableModel, die ik zelf heb aangemaakt (class myTableModel extends AbstractTableModel), en laat deze zien op het scherm.

Ik maak dan connectie met de database, en lees de data in. De data plaats ik in de myTableModel, en wil dan deze veranderingen laten zien in de JTable. Ik weet dus zeker (100%) dat de data veranderd is.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ok... even een 100% foute oplossing, doe na afloop eens een myTable.repaint()

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op dinsdag 22 januari 2002 10:30 schreef Alarmnummer het volgende:
Ok... even een 100% foute oplossing, doe na afloop eens een myTable.repaint()
niets :(

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
komt het misschien doordat ik een andere data invoer?
de table die ik eerst aanmaak heeft _Geen_ rows/cols, maar zodra ik data inlees heb ik er stuk of 10 colommen

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
ik heb het! :)

alarmnummer bedankt voor je hulp!

fireTableStructureChanged() <- dat wassum :)
Pagina: 1