[Java] JBuilder button events triggeren twee keer

Pagina: 1
Acties:

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Het gaat mis bij het onderstaande stukje code (vermoedelijk), een ander soortgelijk stuk daar gaat het ook fout. Het maakt niet uit wat ik doe, als ik op de knop klik die het in gang zet krijg ik altijd alle meldingen twee keer, als ik alles goed in vul krijg ik eerst de melding dat de kamer is toegevoegd, direct daarna dat de kamer al bestaat.

Het probleem had ik al eerder, toen is het 'vanzelf' verdwenen nadat ik even hier in aan iets anders was begonnen, en nu is het weer terug. Ik snap niet zo goed waar die dubbele trigger vandaan komt....

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
        public void butNieuweKamerToevoegen_mouseReleased(MouseEvent e) {
        try {
            int KamerNummerNK = Integer.parseInt(inpKamerNummerNK.getText());
            try {
                int CapaciteitNK = Integer.parseInt(inpCapaciteitNK.getText());
                if (CapaciteitNK >= 1) {
                    if (hetHotel.maakKamer(KamerNummerNK, CapaciteitNK)) {
                        JOptionPane.showMessageDialog(null, "Kamer toegevoegd");
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "Deze kamer bestaat al");
                    }
                }
                else {
                    JOptionPane.showMessageDialog(null, "Minimaal een persoon capaciteit");
                }
            }
            catch (NumberFormatException nfeNK) {
                JOptionPane.showMessageDialog(null, "Er mogen alleen nummers ingevuld worden bij de capaciteit");
           }
        }
        catch (NumberFormatException nfeNK) {
            JOptionPane.showMessageDialog(null, "Alleen nummers gebruiken in het kamernummer");
        }
        updateLijsten();
    }

iOS developer


  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 22-04 03:55

Nick_S

++?????++ Out of Cheese Error

Je kan verschillende mouse events krijgen.
Mouse Events

* a mouse button is pressed
* a mouse button is released
* a mouse button is clicked (pressed and released)
* the mouse cursor enters the unobscured part of component's geometry
* the mouse cursor exits the unobscured part of component's geometry
Dus kijk even welke soorten events je binnen krijgt.

[ Voor 4% gewijzigd door Nick_S op 19-09-2005 11:58 ]

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


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

Alarmnummer

-= Tja =-

Ik zou het trouwens aan een action event plakken (actionListener) en die andere events links laten liggen.

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Alarmnummer schreef op maandag 19 september 2005 @ 12:01:
Ik zou het trouwens aan een action event plakken (actionListener) en die andere events links laten liggen.
Dat zou ik ook het liefste doen, zo heb ik het ook geleerd, maar het doel van dit project is leren werken met JBuilder.....of zie ik iets in JBuilder over het hoofd? Vorig jaar ging het tenminste nog op noeste wijze met TextPad, alles wat fout ging was jouw fout in ieder geval.

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Ik zag iets in JBuilder over het hoofd inderdaad.....

iOS developer


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 18-04 05:37

alienfruit

the alien you never expected

Ja, JBuilder is toch ook gewoon een code-klopper of je nou TextPad of JBuilder gebruikt :+ Ach, JBuilder vind ik wel fijn werken voor J2ME prut. :):) De nieuwe 2006 schijnt nu ook echt Hibernate ondersteuning te hebben maar dat moet ik nog bekijken/uitzoeken.

[ Voor 27% gewijzigd door alienfruit op 19-09-2005 13:40 ]


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Iets te vroeg gejuicht, hij geeft het zelfde probleem bij ActionListener.....en wat is het toch ook een vaag pakket, hij bleef mekkeren over een onzichtbare fout op een plek waar het helemaal niet hoorde, ik sloot hem met het kruisje af per ongeluk waarna opeens niet meer gevraagd werd om iets op te slaan, en opeens geen rare fout meer maar wel weer twee keer dezelfde actie als ik klik.

Volgens mij was ik al klaar geweest zonder JBuilder....

Dit is de code tot nu toe:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* knip */
    public void butNieuweKamerToevoegen_actionPerformed(ActionEvent e) {
        if (e.getActionCommand() == "Toevoegen") {
            try {
                int KamerNummerNK = Integer.parseInt(inpKamerNummerNK.getText());
                try {
                    int CapaciteitNK = Integer.parseInt(inpCapaciteitNK.getText());
                    if (CapaciteitNK >= 1) {
                        if (hetHotel.maakKamer(KamerNummerNK, CapaciteitNK)) {
                            JOptionPane.showMessageDialog(null,
                                    "Kamer toegevoegd");
                        } else {
                            JOptionPane.showMessageDialog(null,
                                    "Deze kamer bestaat al");
                        }
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "Minimaal een persoon capaciteit");
                    }
                } catch (NumberFormatException nfeNK) {
                    JOptionPane.showMessageDialog(null,
                                                  "Er mogen alleen nummers ingevuld worden bij de capaciteit");
                }
            } catch (NumberFormatException nfeNK) {
                JOptionPane.showMessageDialog(null,
                                              "Alleen nummers gebruiken in het kamernummer");
            }
            updateLijsten();
        }
    }

/* etcetera */

class HotelApplet_butNieuweKamerToevoegen_actionAdapter implements
        ActionListener {
    private HotelApplet adaptee;
    HotelApplet_butNieuweKamerToevoegen_actionAdapter(HotelApplet adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.butNieuweKamerToevoegen_actionPerformed(e);
    }
}

[ Voor 69% gewijzigd door BikkelZ op 19-09-2005 16:21 ]

iOS developer


  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-04 17:35

momania

iPhone 30! Bam!

Je zal wel ergens 2 keer een actionListener registreren aan een button :)

Maar aangezien je volgens mij via de visuele editor je gui in elkaar prikt (gezien de methode namen) zal je niet echt makkelijk doorzoekbare code hebben om te vinden waar je probleem nu echt zit :)

Neem je whisky mee, is het te weinig... *zucht*


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Als ik de twee actionlisteners (er zit nog een knop in ergens) er uit gooi dan triggert hij helemaal niet op beide knoppen.

edit:

Als ik een van de twee knoppen totaal uitcommentarieer en alles wat er mee te maken heeft, zelfs dan triggert hij hem nog dubbel......aaaargh! |:(

[ Voor 40% gewijzigd door BikkelZ op 19-09-2005 16:31 ]

iOS developer


  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-04 17:35

momania

iPhone 30! Bam!

Ik bedoel dus dat je waarschijnlijk 1 actionlistener 2 keer aan 1 button had geregistreerd.

Laat de code eens zien waar je gui gebouwd wordt?

Neem je whisky mee, is het te weinig... *zucht*


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Misschien zie jij hier meer in dan ik:

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
public class HotelApplet extends JApplet {
    Hotel hetHotel;
    boolean isStandalone = false;
    DefaultListModel legeKamersLijst;
    DefaultListModel volleKamersLijst;
    JList lijstVrijeKamers = new JList();
    JList lijstGereserveerdeKamers = new JList();
    JLabel labVrijeKamers = new JLabel();
    JLabel labGereserveerdeKamers = new JLabel();
    JButton buttReserveer = new JButton();
    JButton buttGeefVrij = new JButton();
    JLabel labKamerInfo = new JLabel();
    JTextField inpAantPers = new JTextField();
    JLabel labVoor = new JLabel();
    JLabel labPersonen = new JLabel();
    JLabel labGasten = new JLabel();
    JLabel labAantGasten = new JLabel();
    JPanel panVoegKamerToe = new JPanel();
    JLabel labVoegNieuwKamerToe = new JLabel();
    JTextField inpKamerNummerNK = new JTextField();
    JLabel labKamerNummerNK = new JLabel();
    JLabel labCapaciteitNK = new JLabel();
    JTextField inpCapaciteitNK = new JTextField();
    JButton butNieuweKamerToevoegen = new JButton();
    JLabel labCapaciteitAantal = new JLabel();
    JLabel labAantalGastenAantal = new JLabel();
    JLabel labKamerNummer = new JLabel();
    JLabel labKamerNummerNummer = new JLabel();


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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
    private void jbInit() throws Exception {
        this.setSize(new Dimension(400, 300));
        this.getContentPane().setLayout(null);
        lijstVrijeKamers.setBounds(new Rectangle(10, 35, 114, 133));
        lijstGereserveerdeKamers.setBounds(new Rectangle(141, 35, 114, 133));
        labVrijeKamers.setText("Vrij");
        labVrijeKamers.setBounds(new Rectangle(10, 11, 114, 20));
        labGereserveerdeKamers.setText("Bezet");
        labGereserveerdeKamers.setBounds(new Rectangle(141, 11, 114, 20));
        buttReserveer.setMargin(new Insets(2, 10, 2, 10));
        buttReserveer.addActionListener(new
                                        HotelApplet_buttReserveer_actionAdapter(this));
        buttGeefVrij.setBounds(new Rectangle(140, 177, 115, 24));
        buttGeefVrij.setText("Geef kamer vrij");
        labKamerInfo.setText("Kamerinfo");
        labKamerInfo.setBounds(new Rectangle(271, 11, 84, 21));
        inpAantPers.setText("");
        inpAantPers.setBounds(new Rectangle(37, 210, 25, 18));
        labVoor.setToolTipText("");
        labVoor.setText("Voor");
        labVoor.setBounds(new Rectangle(11, 210, 26, 17));
        labPersonen.setToolTipText("");
        labPersonen.setText("personen");
        labPersonen.setBounds(new Rectangle(66, 211, 57, 15));
        labGasten.setText("Capaciteit");
        labGasten.setBounds(new Rectangle(269, 69, 76, 21));
        labAantGasten.setText("Aantal gasten");
        labAantGasten.setBounds(new Rectangle(269, 100, 69, 21));
        panVoegKamerToe.setBackground(SystemColor.control);
        panVoegKamerToe.setBorder(BorderFactory.createEtchedBorder());
        panVoegKamerToe.setToolTipText("");
        panVoegKamerToe.setBounds(new Rectangle(9, 236, 384, 57));
        panVoegKamerToe.setLayout(null);
        labVoegNieuwKamerToe.setText("Voeg nieuwe kamer toe");
        labVoegNieuwKamerToe.setBounds(new Rectangle(4, 4, 115, 15));
        inpKamerNummerNK.setToolTipText("");
        inpKamerNummerNK.setText("");
        inpKamerNummerNK.setBounds(new Rectangle(81, 31, 49, 19));
        labKamerNummerNK.setText("Kamernummer");
        labKamerNummerNK.setBounds(new Rectangle(6, 29, 70, 19));
        labCapaciteitNK.setToolTipText("");
        labCapaciteitNK.setText("Capaciteit");
        labCapaciteitNK.setBounds(new Rectangle(141, 33, 53, 16));
        inpCapaciteitNK.setToolTipText("");
        inpCapaciteitNK.setText("");
        inpCapaciteitNK.setBounds(new Rectangle(202, 32, 31, 18));
        butNieuweKamerToevoegen.setBounds(new Rectangle(279, 32, 94, 20));
        butNieuweKamerToevoegen.setText("Toevoegen");
        butNieuweKamerToevoegen.addActionListener(new
                HotelApplet_butNieuweKamerToevoegen_actionAdapter(this));
        labCapaciteitAantal.setBorder(BorderFactory.createLoweredBevelBorder());
        labCapaciteitAantal.setText("");
        labCapaciteitAantal.setBounds(new Rectangle(363, 72, 31, 18));
        labAantalGastenAantal.setBorder(BorderFactory.createLoweredBevelBorder());
        labAantalGastenAantal.setText("");
        labAantalGastenAantal.setBounds(new Rectangle(364, 104, 32, 17));
        labKamerNummer.setText("Kamernummer");
        labKamerNummer.setBounds(new Rectangle(270, 36, 84, 21));
        labKamerNummerNummer.setBorder(BorderFactory.createLoweredBevelBorder());
        labKamerNummerNummer.setText("");
        labKamerNummerNummer.setBounds(new Rectangle(358, 39, 30, 19));
        this.getContentPane().add(lijstGereserveerdeKamers);
        buttReserveer.setBounds(new Rectangle(10, 177, 115, 24));
        buttReserveer.setText("Reserveer kamer");
        this.getContentPane().add(lijstVrijeKamers);
        this.getContentPane().add(labGereserveerdeKamers);
        this.getContentPane().add(labVrijeKamers);
        this.getContentPane().add(buttReserveer);
        this.getContentPane().add(buttGeefVrij);
        this.getContentPane().add(labVoor);
        this.getContentPane().add(inpAantPers);
        this.getContentPane().add(labPersonen);
        this.getContentPane().add(labKamerInfo);
        this.getContentPane().add(panVoegKamerToe);
        this.getContentPane().add(labGasten);
        this.getContentPane().add(labAantGasten);
        this.getContentPane().add(labCapaciteitAantal);
        this.getContentPane().add(labAantalGastenAantal);
        this.getContentPane().add(labKamerNummer);
        this.getContentPane().add(labKamerNummerNummer);
        panVoegKamerToe.add(labVoegNieuwKamerToe);
        panVoegKamerToe.add(inpKamerNummerNK);
        panVoegKamerToe.add(labKamerNummerNK);
        panVoegKamerToe.add(labCapaciteitNK);
        panVoegKamerToe.add(inpCapaciteitNK);
        panVoegKamerToe.add(butNieuweKamerToevoegen);
    }

iOS developer


  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-04 17:35

momania

iPhone 30! Bam!

Dit ziet er wel ok uit.

Enige dat ik nu nog kan verzinnen is dat je jbInit() 2 keer wordt aangeroepen. Waarschijnlijk dan in de normale init().

Neem je whisky mee, is het te weinig... *zucht*


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Hehehe nou ik heb nu bijna de gehele source gepost, maar ik denk dat je een aardig eind in de richting zit met je opmerking:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    //Construct the applet
    public HotelApplet() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    //Initialize the applet
    public void init() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        myInit();
    }


Ik ben ff aan het bedenken welke ik weg moet gooien.....het is een applet....

[ Voor 8% gewijzigd door BikkelZ op 19-09-2005 16:52 ]

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Okee die ene init() weg gegooid, dat was hem. Vreemd dat die reut automatisch tweemaal aangemaakt wordt.....

THNX JBUILDER!!! 8)7

iOS developer


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:28

Robtimus

me Robtimus no like you

BikkelZ schreef op maandag 19 september 2005 @ 16:54:
Okee die ene init() weg gegooid, dat was hem. Vreemd dat die reut automatisch tweemaal aangemaakt wordt.....

THNX JBUILDER!!! 8)7
Nee niet vreemd. Dat komt omdat het een applet is.

Net zoals elke Java class werd hier gewoon de constructor aangeroepen, en daardoor jbInit(). Het punt is alleen dat van Applets ook de init() wordt aangeroepen zodra deze voor de eerste keer wordt aangeroepen. En daardoor kwam dus die tweede jbInit(). En dat is dus wel fout, die jbInit() had er nooit twee keer in mogen staan.

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


  • Sappie
  • Registratie: September 2000
  • Laatst online: 27-04 07:10

Sappie

De Parasitaire Capaciteit!

offtopic:
Fontys Eindhoven? :p

Specs | Audioscrobbler


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Ghehehe valt het op O-)

iOS developer

Pagina: 1