Avatar billede the_ghost Nybegynder
04. december 2003 - 23:08 Der er 4 kommentarer og
1 løsning

JButton's problem.

Jeg har et program der skal bruge x antal  af JButton
dem ligger jeg ind i en ArrayList for derefter at hente dem ud igen, og så tilføje dem + addActionListener.

Mit problem er kan jeg så se hvilken knap der er trykket på?

Nede i min metode public void actionPerformed(ActionEvent e)
har jeg prøvet med:
System.out.println( dateButton.getText() );
/*Men den udskriver bare texten fra den sidste der er lagt
* ud.
*/
Jeg har også prøvet med:
for(int i = 0; i < datoer.size(); i++)
{
JButton b1 = (JButton) datoer.get(i);
if ( b1. )
{
  System.out.println( b1.getText() );
}
)
//men den udskriver bare texten fra alle mine buttons.

Er der nogen der kan hjælpe mig vil jeg blive meget glad.
Avatar billede the_ghost Nybegynder
04. december 2003 - 23:09 #1
Der skulle stå:
Mit problem er hvordan kan jeg så se hvilken knap der er trykket på?
Avatar billede arne_v Ekspert
04. december 2003 - 23:12 #2
Du kalder din action listeners constructor med en referance til dit
array af buttons.

I action performed laver du så en løkke der tester:

if (ev.getSource() == button[i])
Avatar billede the_ghost Nybegynder
04. december 2003 - 23:20 #3
mange tak for hjælpen... det var et simpelt problem der havde kostet mig flere timers arbejde...
ligger du ikke lige et svar?
Avatar billede arne_v Ekspert
04. december 2003 - 23:21 #4
Man behøver faktisk ikke engang lave det til en klasse med argument til
constructor.

Se dette her eksempel:

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

public class MultiButton extends JFrame implements ActionListener {
    JButton[] button;
    public MultiButton(int n) {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(5,4));
        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();
    }
}
Avatar billede the_ghost Nybegynder
04. december 2003 - 23:26 #5
Det havde jeg heller ikke gjort
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