[java]JTable en AbstractTableModel

Pagina: 1
Acties:

  • urkelman
  • Registratie: December 2003
  • Laatst online: 29-04 08:49
Ik heb een JTable, daarin verschijnen orders.
ik kan ze ook bewerken en dat wordt dan allemaal opgeslagen in een resultset die het weer opslaat in een mysql database.
Ik voeg een order toe met een knop toevoegen. hij voert dan het volgende uit
Java:
1
 orderRegelInvoer.nieuw("ordertestje") 
pas na het programma te hebben afgesloten en opnieuw te hebben opgestart krijg ik dus de tekst "ordertestje" te zien.
hoe kan ik nou zeggen van, als ik iets toevoeg refresh dan automatisch??

ik heb het volgende al geprobeerd:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
class OrderRegelToevoegenKnopHandler implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            
            
            orderRegelInvoer.nieuw("ordertest");
            
            //orderRegelInvoer.getData();
            //tbArtikelen.getColumnModel();
            //orderRegelInvoer.fireTableDataChanged();
            //orderRegelInvoer.fireTableStructureChanged();
            //orderRegelInvoer.haalData("`order`");
        }
    }

alles wat tussen comments staat heb ik al eens geprobeerd.
maar daar krijg ik of foutmeldingen zoals bij de firetablestructurechanged en die daarboven dat de array out of bounds is -1 en met de andere dingen krijg ik geen foutmeldingen maar geeft hij het (gewenste) resultaat niet.

dit stukje code hoort nog bij de tablemodellisteners:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
orderRegelInvoer.addTableModelListener(new TableModelListener() {
            public void tableChanged(TableModelEvent e) {
                
                if (e.getType() == e.DELETE)
                    orderRegelInvoer.verwijder(verwijderid);
                else {
                    int rij = e.getFirstRow();
                    System.out.println(rij);
                    String id = orderRegelInvoer.getValueAt(rij, 0).toString();
                    String tekst = orderRegelInvoer.getValueAt(rij, 1).toString();
                    if (e.getType() == e.UPDATE)
                        orderRegelInvoer.bewerk(id, tekst);
                    if (e.getType() == e.INSERT)
                        orderRegelInvoer.nieuw(/*id,*/ tekst);
                }
            }
        });

  • Rath
  • Registratie: April 2002
  • Laatst online: 18-02 10:59
Ik weet niet hoe ver je kennis rijkt van het OO-programmeren, maar mij lijkt dit perfect oplosbaar met het Observer pattern
meer info over observer

I don't believe we have a society, we have a colony of animals


  • urkelman
  • Registratie: December 2003
  • Laatst online: 29-04 08:49
ik denk idd dat dit wel een uitkomst kan bieden ja...alleen weet ik niet of mijn huidige kennis van java dit toelaat:S

ben nog maar een beginner...

Verwijderd

Rath schreef op woensdag 01 juni 2005 @ 18:28:
Ik weet niet hoe ver je kennis rijkt van het OO-programmeren, maar mij lijkt dit perfect oplosbaar met het Observer pattern
meer info over observer
En wat wilde je observeren? De database? Ik neem even voor het gemak aan dat er geen domein laag ligt waar je op in kunt haken.

Dus quick-and-dirty, zorg dat de knop waarmee je submit ook je Table verteld dat hij nieuwe data moet ophalen.

  • urkelman
  • Registratie: December 2003
  • Laatst online: 29-04 08:49
ja precies, dat is dus ook de bedoeling, alleen zou niet weten hoe ik dat ff snel kan aanpakken...

ik heb geprobeerd om in me actionlistener te zetten notifyAll() en notify(); maar bij beide krijg ik errors...

moet ik die class in het voorbeeld die Rath gaf implementeren voorbeeld implementeren?

[ Voor 8% gewijzigd door urkelman op 03-06-2005 11:18 ]


  • urkelman
  • Registratie: December 2003
  • Laatst online: 29-04 08:49
dit zijn ondertussen de dingen die ik al gedaan hebt:

Java:
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
class OrderRegelToevoegenKnopHandler implements ActionListener {
        public void actionPerformed(ActionEvent e) {
/*try{
                Database database = new Database();
                database.openCon();
                Statement s = database.connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
                s.execute("INSERT INTO `order`(`order`) VALUES('ordertest2')");
                //ResultSet rs = s.getResultSet();
            }catch(SQLException sqlException){
                System.out.println("Error handler: "+ sqlException);
            }*/
            
            //orderRegel.haalData("`order`");
            //orderRegel.fireTableDataChanged();
            orderRegelInvoer.nieuw("ordertest");
            //notify();
            //orderRegelInvoer.
            //orderRegelInvoer.getData();
            //tbArtikelen.getColumnModel();
            //orderRegelInvoer.fireTableDataChanged();
            //orderRegelInvoer.fireTableChanged();
            //orderRegelInvoer.fireTableStructureChanged();
            //orderRegelInvoer.haalData("`order`");
            //tbArtikelen.setModel(orderRegelInvoer);
            ///revalidate();
            //tbArtikelen.repaint();
    }
    }

[ Voor 10% gewijzigd door urkelman op 03-06-2005 11:24 ]


  • urkelman
  • Registratie: December 2003
  • Laatst online: 29-04 08:49
het is opgelost, ik heb een defaulttablemodel erbij gezet volgens de website http://www.ivobrugge.be/c...rsus=java&pagina=jdbc.asp
Pagina: 1