Avatar billede stig-ole Nybegynder
07. juni 2005 - 01:04 Der er 9 kommentarer og
1 løsning

Flere listener bliver aktive (ComboBoxe)

Hej,
Jeg har et problem med at når jeg trykker på en combobox, så bliver listeneren i de andre comboboxe også aktive.
Hvad gøre jeg forkert???

Filerne er her:
http://www.stig-ole.dk/Filer/Opstilling.rar
Avatar billede simonvalter Praktikant
07. juni 2005 - 18:40 #1
jeg kan umiddelbart ikke set det.. men det er også begrænset med swing kendskab jeg har.
Men det er da er forfærdelig masse listeners du har... jeg vil foreslå dig noget ligende. (indsæt selv)

private static final String GOALKEEPER = "GK";
private static final String SOMEONEELSE = "BLA";
.
.
GKComboBox.addActionListener(new ComboBoxListener());
GKComboBox.setActionCommand(GOALKEEPER);
LBComboBox.addActionListener(new ComboBoxListener());
LBComboBox.setActionCommand(SOMEONEELSE);
.
.
.
class ComboBoxListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
        String action = e.getActionCommand();

            if (action.equals(GOALKEEPER)) {
                  System.out.println("goal keeper is now: "+GKComboBox.getSelectedItem().toString());
            } else if(action.equals(SOMEONEELSE)){

            }
        }

    }


Så skulle det være lidt mere overskuligt og du kan muligvis genbruge meget af den samme kode som jeg så du havde gang i at skrive i alle listenerne.

En anden ting er din main metode. idag bruger man setVisible(true); og ikke .show()
og så er det anbefalet at man starter den på denne måde da hvis jeg husker ellers kan opstå deadlock.

public class HoldOpstillingMain {
    public static void main(String[] arg) {

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                FrameHoldOpstilling holdOpstilling = new FrameHoldOpstilling();
                holdOpstilling.setVisible(true);
            }

        });
    }
}
Avatar billede stig-ole Nybegynder
08. juni 2005 - 04:49 #2
Tak for de gode råd, men jeg kan desværre ikke give dig point, da problemet ikke blev løst, men tak alligevel.
Avatar billede snoop_one Nybegynder
08. juni 2005 - 17:28 #3
Det der går galt er at du sætter din actionlistner op før du sætter dine værdier ind i dine boxe... normalt skal du insætte den data du vil have dernæst sætte action listeners på.
Så det du kunne gøre er at flytte de linies kode ud i en metode som f.eks.:

    private void addActionListeners() {
        GKComboBox.addActionListener(new GKComboBoxListener());
        LBComboBox.addActionListener(new LBComboBoxListener());
        CB1ComboBox.addActionListener(new CB1ComboBoxListener());
        CB2ComboBox.addActionListener(new CB2ComboBoxListener());
        RBComboBox.addActionListener(new RBComboBoxListener());
        LMComboBox.addActionListener(new LMComboBoxListener());
        CM1ComboBox.addActionListener(new CM1ComboBoxListener());
        CM2ComboBox.addActionListener(new CM2ComboBoxListener());
        RMComboBox.addActionListener(new RMComboBoxListener());
        CF1ComboBox.addActionListener(new CF1ComboBoxListener());
        CF2ComboBox.addActionListener(new CF2ComboBoxListener());
    }
også til føje følgende i din kode:
public FrameHoldOpstilling()
{
    initGUI();
        hentAlleNavneInd();
        putTommeFelterIDetAktuelleHold();
    putAktuelleNavneIComboBoxe();
        putNavneIComboBoxe();
    //Nu vil vi gerne lytte...
    addActionListeners();
}
Avatar billede snoop_one Nybegynder
08. juni 2005 - 17:31 #4
Grunden er at dit addItem kald notifier din actionlistener...
Avatar billede stig-ole Nybegynder
09. juni 2005 - 01:50 #5
Til det første du skrev, så hjælper det kun når man starter programmet op, men når det kører og så evt åbner en combobox, så bliver der også gået ind i de andre listenere.
Men du har ret i det andet du har skrevet.

Kan man evt fjerne actionListenerne, udfører det man skal på comboboxene og så sætte dem til igen (det her virker ikke: CF2ComboBox.removeActionListener(new CF2ComboBoxListener());)
Avatar billede banielsen Nybegynder
09. juni 2005 - 19:30 #6
prøv at indsætte:
if(GKComboBox.getSelectedItem()!=null)
i starten af hver listener
Avatar billede stig-ole Nybegynder
09. juni 2005 - 21:18 #7
Det virker sgu, tak for det...
Avatar billede stig-ole Nybegynder
09. juni 2005 - 21:18 #8
Kom bare med et svar.
Avatar billede banielsen Nybegynder
16. juni 2005 - 11:54 #9
hest
Avatar billede stig-ole Nybegynder
18. juni 2005 - 02:14 #10
nemlig ja
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