Det er fordi jeg opretter en række JButtons i en while lykke - det betyder jo at de får det samme variabel navn, men jeg skal i min actionListener på knappen gerne kunne kende forskel på dem
public class MultiButton extends JFrame implements ActionListener { JButton[] button; public MultiButton(int n) { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new GridLayout(5, n / 5)); button = new JButton[n]; for (int i = 0; i < button.length; i++) { button[i] = new JButton("Button " + (i + 1)); button[i].addActionListener(this); getContentPane().add(button[i]); } pack(); } public void actionPerformed(ActionEvent ev) { for (int i = 0; i < button.length; i++) { if (ev.getSource() == button[i]) { JOptionPane.showMessageDialog(null, "Number " + (i + 1)); } } } public static void main(String[] args) { MultiButton f = new MultiButton(20); f.show(); } }
Ok - det ser ud til at virke - men jeg er ikke helt med på hvad jeg skal gøre i min actionListener? Det der er min mening er at knappens nr skal sendes med i constructeren til Resultat ActionListener Resultat = new ActionListener(){ public void actionPerformed(ActionEvent e){ Resultat res = new Resultat(knappens id); res.setSize(100,270); res.setVisible(true);
Jeg gjorde det på følgende måde - jeg ved ikkeom det er dumt, men det virker ActionListener Resultat = new ActionListener(){ public void actionPerformed(ActionEvent e){ if (e.getSource() == resultat[1]) { Resultat res = new Resultat(1); res.setSize(100,270); res.setVisible(true); } if (e.getSource() == resultat[2]) { Resultat res = new Resultat(2); res.setSize(100,270); res.setVisible(true); }
Men jeg vil nok gøre som Arne og putte det i en løkke:
ActionListener Resultat = new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 0; i < resultat.length; i++) { if (e.getSource() == resultat[i]) { Resultat res = new Resultat(i+1); res.setSize(100,270); res.setVisible(true); } } } }
Jeg ved spørgsmålet er lukket men det kunne jo være at nogen kiggede ind alligevel - da jeg lige har et tillægs spørgsmål. Når jeg nu befinder mig inde i ActionListener klassen (4 tråde oppe)og gerne vil kunne sende den ydre klasse med som parameter i Resultat res = new Resultat(i+1, ydre klasse) - hvordan gør jeg det - jeg kan jo ikke skrive this da det så er ActionListener klassen der sendes med, men super anvendes vel kun ved nedarvning???
Ja det var også min første tanke, men jeg kan ikke få det til at virke. Det virker sikkert fint med at give klassen med som parameter, men problemet er at der ikke sker noget når man trykker på knappen - jeg smider lige noget kode, så kan du måske se hvor det går galt, men jeg advarer der er en del
Jeg tror jeg går i seng nu - har lige fundet fejlen. Havde glemt at tilføje ny actionlistener til knappen - altså button[i].addActionListener(this); Ikke klogt men sådan går det jo engang imellem :o) - Tak for hjælpen i hvert fald
Synes godt om
Ny brugerNybegynder
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.