Avatar billede sb Nybegynder
18. februar 2001 - 12:17 Der er 3 kommentarer og
1 løsning

mouseClicked

Jeg har en applet som tegner op 12X8 buttons, hver med et \"L\" skrevet på.

Når man klikker på en button, skal bokstavet \"L\" ændres til \"S\".

Jeg har tænkt på at bruge mouseClicked, læse koordinaterne til musen, og på den måde finde ud af hvilken button som er aktiveret. Hvordan gør jeg dette?

public void mouseClicked(MouseEvent event) {
  int yCoord = event.getY();
  repaint();

--------
Hele koden :
--------
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class oving6 extends Applet implements MouseListener {

private Button[][] plass;   
private final int RADMAX = 12;   
private final int SETMAX = 10;   
private Label meld1, meld2;
private Panel midt;
private int yCoord, xCoord;


    public void init() {

    plass = new Button[RADMAX][SETMAX];

    setLayout( new BorderLayout() );   
        add( meld1 = new Label(\"Klikk på en av knappene for bestilling\"), BorderLayout.NORTH );
    Panel midt = new Panel( new GridLayout( RADMAX+1, SETMAX+1, 5, 5 ) );

    midt.add( new Label(\"KINO\") );
        for ( int sete = 0; sete<SETMAX; sete++ )  midt.add( new Label(\"Sete \"+(sete+1)) );

    for ( int rad = 0; rad<RADMAX; rad++ ) {
            midt.add( new Label(\"Rad \"+(rad+1)) );
              for ( int sete = 0; sete<SETMAX; sete++ )
              midt.add( plass[ rad ][ sete ] = new Button( \"L\" ) );   
        }   


    add( midt, BorderLayout.CENTER );
    add( meld2 = new Label(\"Y : \" + yCoord), BorderLayout.SOUTH );

    this.addMouseListener(this);
    }



    public void mouseClicked(MouseEvent event) {
        int yCoord = event.getY();
        repaint();
       
    }

    public void mousePressed(MouseEvent event) {
    }

    public void mouseReleased(MouseEvent event) {
    }

    public void mouseEntered(MouseEvent event) {
    }

    public void mouseExited(MouseEvent event) {
    }

}
Avatar billede pstric Nybegynder
18. februar 2001 - 15:34 #1
Lav en ActionListener, som du sætter til alle buttons med addActionListener.

I den skifter du teksten på den button, der udløste actionPerformed og så kalder du removeActionListener bagefter.
Avatar billede kama Nybegynder
18. februar 2001 - 16:18 #2
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class oving6 extends Applet {

    private Button[][] plass;   
    private final int RADMAX = 12;   
    private final int SETMAX = 10;   
    private Label meld1, meld2;
    private Panel midt;
    private int yCoord, xCoord;

    public void init() {

    plass = new Button[RADMAX][SETMAX];

    setLayout( new BorderLayout() );   
    add( meld1 = new Label(\"Klikk på en av knappene for bestilling\"), BorderLayout.NORTH );
   
    Panel midt = new Panel( new GridLayout( RADMAX+1, SETMAX+1, 5, 5 ) );
   
    ActionListener listener = new KnapListener();

    midt.add( new Label(\"KINO\") );
   
    for ( int sete = 0; sete<SETMAX; sete++ )
        midt.add( new Label(\"Sete \"+(sete+1)) );

    for ( int rad = 0; rad<RADMAX; rad++ ) {
            midt.add( new Label(\"Rad \"+(rad+1)) );
              for ( int sete = 0; sete<SETMAX; sete++ ) {
                  midt.add( plass[ rad ][ sete ] = new Button( \"L\" ) );
                  (plass[ rad ][ sete ] ).addActionListener(listener);
              }
    }   

    add( midt, BorderLayout.CENTER );
    add( meld2 = new Label(\"Y : \" + yCoord), BorderLayout.SOUTH );
    }

    private class KnapListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            Object source = event.getSource();
            for ( int rad = 0; rad<RADMAX; rad++ ) {
                for (int sete=0; sete!=SETMAX; sete++)
                if (source==plass[ rad ][ sete ]) (plass[ rad ][ sete ]).setLabel(\"S\");
            }   
    }
  }
}

/kama
Avatar billede pstric Nybegynder
18. februar 2001 - 16:32 #3
Eller endnu kortere:

public void actionPerformed(ActionEvent event) {
  ((Button) event.getSource()).setLabel(\"S\");
}
Avatar billede pstric Nybegynder
18. februar 2001 - 16:47 #4
Og når taksten er ændret, så er der ingen grund til at gøre det igen, så

public void actionPerformed(ActionEvent event) {
  ((Button) event.getSource()).setLabel(\"S\");
  ((Button) event.getSource()).removeActionListener(this);
}
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