Avatar billede Tampico Praktikant
04. december 2003 - 13:30 Der er 6 kommentarer og
1 løsning

Oprette actionListner(s) afhænging af et databaseudtræk

Hejsa !!!

Jeg sidder med et problem, jeg ikke kan finde en løsning på. Jeg har nogle stole, hvor jeg trækker antallet ud fra en database, og på baggrund af det antal jeg får, får jeg en løkke til at køre det antal der er stole til.

I løkken bliver så hver gang oprettet en knap, og til denne skal tilknyttes en actionListner, hvor man kan reservere et sæde....
Det er så her problemet opstår, for normalt ligger denne jo bare som en annonym indre klasse og bliver compileret som en class-fil, men i dette tilfælde skal det jo være en universal der kan håndtere en handling på baggrund af nogle variabler og antalet af knapper der bliver oprettet.

Hvordan kommer jeg lige videre herfra ???

På forhånd tak.
Mvh.
Avatar billede arne_v Ekspert
04. december 2003 - 13:42 #1
Du laver et array af kontroller.

Du laver en instans af en ikke anonym klasse som implementer action listener
og får en referance til det array med over i constructor.

Du tilføjer det samme objekt som listener på alle kontroller i array.

Når den modtager en vent løber den array igennem og ser hvad det
er den er blevet aktiveret på.
Avatar billede Tampico Praktikant
04. december 2003 - 15:17 #2
Jeg har prøvet dette, men det giver mig en exception der siger at "Driver.ButtonHandler shuold be declared abstract"

Jeg opretter:

ButtonHandler bHandler = new ButtonHandler();


Inde i løkken bliver sædet sat og handleren kaldet med koden:
(saede bliver opskrevet hver gang)

saedeRadio[saede] = new JRadioButton("sæde "+i, false);
saedeRadioB[saede].addActionListener(bHandler);



Så har jeg endelig klassen ButtonHandler:

private class ButtonHandler implements ActionListener {
  public void actionPerfomed(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "Test");
  }


Hvad gør jeg galt ?????
Avatar billede arne_v Ekspert
04. december 2003 - 15:24 #3
should be declared abstract = der mangler en metode
Avatar billede Tampico Praktikant
04. december 2003 - 16:59 #4
Jeg kan stadig ikke finde ud af det.... Nu har jeg forsøgt med en simpelt eksempl i stedet, men får samme resultat :-(


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestKlasse extends JFrame {

  private JRadioButton test;

  public TestKlasse() {
    //ButtonHandler butHandler = new ButtonHandler();
    Container c =getContentPane();
    c.setLayout(new FlowLayout());
    test = new JRadioButton("test", true);
    c.add(test);

    test.addActionListener(butHandler);

    setSize(300,300);
    show();
  }

  private class ButtonHandler implements ActionListener {
    public void actionPerfomed(ActionEvent e) {
      if(test.isSelected())
      JOptionPane.showMessageDialog(null, "Testing");
    }
  }

  public static void main(String[] args) {
    // opret hovedvinduet
    TestKlasse obsAnv = new TestKlasse();
    obsAnv.addWindowListener( new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    } );
  }
}
Avatar billede Tampico Praktikant
04. december 2003 - 18:27 #5
Nåhhh...tror alligevel selv jeg har fundet fejlen... Skal hedde ItemListener
Avatar billede arne_v Ekspert
04. december 2003 - 21:04 #6
Det er såmænd meget banalt - du mangler et "r" i actionPerfomed !
Avatar billede arne_v Ekspert
26. december 2003 - 16:50 #7
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester