Avatar billede yallah Nybegynder
16. august 2001 - 19:16 Der er 13 kommentarer og
1 løsning

Button?

Hej jeg har lavet dette script!

import java.applet.*;
import java.awt.*;

public class Hej extends Applet
{
public void init() {
Label tekst = new Label(\"Prøv at skriv Mads:\");

add(tekst);


TextField field = new TextField(10);
add(field);


Button knap = new Button(\"Test\");
add(knap);


TextArea status = new TextArea(10,10);
status.setBackground(Color.black);
status.setForeground(Color.white);
status.setText(\"Hejsa\");
status.setEditable(false);
add(status);

}

}

hvordan gør jeg så nå man trykker på knappen så tager den teksten fra field og pluser det ind i status???

noget med getText() osv
Avatar billede yallah Nybegynder
16. august 2001 - 20:28 #1
Jeg har prøvet sådan her


import java.applet.*;
import java.awt.*;

public class Hej extends Applet
{

public void init() {
Label tekst = new Label(\"Prøv at skriv Mads:\");

add(tekst);


TextField field = new TextField(10);
add(field);


Button knap = new Button(\"Test\");
knap.addActionListener(this);   
add(knap);


TextArea status = new TextArea(10,10);
status.setBackground(Color.black);
status.setForeground(Color.white);
status.setText(\"Hejsa\");
status.setEditable(false);
add(status);
}

public void actionPerformed(ActionEvent event) {
Object trykket = event.getSource();
if(trykket == Test)
    {
    status.setText(\"Hejsa\");
    }       
}
}


virker ikke
Avatar billede nico26 Nybegynder
16. august 2001 - 23:39 #2
du skal lave en inner class der implementerer iterfacet ActionListener, og så putte et instans af den klasse ind som parameter i knappens addActionListener

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Hej extends Applet {

  TextArea status;

  public void init() {
    Label tekst = new Label(\"Prøv at skriv Mads:\");

    add(tekst);

    TextField field = new TextField(10);
    add(field);

    Button knap = new Button(\"Test\");
    knap.addActionListener(new BtnHandler());   
    add(knap);

    status = new TextArea(10,10);
    status.setBackground(Color.black);
    status.setForeground(Color.white);
    status.setText(\"Hejsa\");
    status.setEditable(false);
    add(status);
  }

  class BtnHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      status.setText(\"Du klikkede på knappen\");
    }
  }
}
Avatar billede yallah Nybegynder
17. august 2001 - 08:37 #3
Hmmmmm jeg kan ikek teste det lige nu... men hvordan laver jeg flere knapper med hver deres funktion???

forstår nemlig ikke 100%?
Avatar billede yallah Nybegynder
17. august 2001 - 08:38 #4
og laver dette script ikke 2 *.class filer?
Avatar billede nico26 Nybegynder
17. august 2001 - 13:57 #5
du kan enten lave en klasse til hver knap, eller du kan bruge ActionEvent parameteren som actionPerformed får med, til at afgøre hvad det er for en knap man har trykket på: e.GetActionCommand(), der returnerer den streng du gav knappen i dens constructor. Hvis du f.eks. laver en knap mere der hedder Test2, og bruger samme ActionListener kan du skrive sådan her:

    Button knap = new Button(\"Test\");
    knap.addActionListener(new BtnHandler());   
    Button knap2 = new Button(\"Test2\");
    knap2.addActionListener(new BtnHandler());   

  ...

  class BtnHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      String cmd = e.getActionCommand();
      if (cmd == \"Test\") {
        //code
      } else if (cmd == \"Test2\") {
        //code
      }
    }
  }


Når man laver en inner class, får man ekstra class-fil, der i dette tilfælde vil hedde Hej$BtnHandler.class
Avatar billede yallah Nybegynder
17. august 2001 - 15:59 #6
HMmm 2 spørgsmål mere...
kan det alves uden den laver 2 filer?
og hvordan laver jeg så den tager teksten fra

\"field\" og putter ned i \"status\" nå man klikker?
Avatar billede yallah Nybegynder
17. august 2001 - 16:04 #7
har prøvet dette uden held

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Hej extends Applet {

  TextArea status;
  TextField field;
  public void init() {
    Label tekst = new Label(\"Prøv at skriv Mads:\");

    add(tekst);

    TextField field = new TextField(10);
    add(field);

    Button knap = new Button(\"Test\");
    knap.addActionListener(new BtnHandler());   
    add(knap);

    status = new TextArea(10,10);
    status.setBackground(Color.black);
    status.setForeground(Color.white);
    status.setText(\"Hejsa\");
    status.setEditable(false);
    add(status);
  }

  class BtnHandler implements ActionListener {
  public void actionPerformed(ActionEvent e) {

      String ny = field.getText();
      status.setText(ny);
      repaint();

    }
  }
}
Avatar billede nico26 Nybegynder
17. august 2001 - 16:15 #8
hvad er problemet
Avatar billede nico26 Nybegynder
17. august 2001 - 16:16 #9
jeg tror ikke umidelbart at du kan slippe for den ekstra class-fil
Avatar billede nico26 Nybegynder
17. august 2001 - 16:24 #10
det her skulle virke

class BtnHandler implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    status.setText(field.getText());
  }
}
Avatar billede yallah Nybegynder
19. august 2001 - 18:46 #11
Det virker sq ikke den ændre ikke noget nå man trykker
Avatar billede nico26 Nybegynder
19. august 2001 - 20:53 #12
det forstår jeg ikke, det virker hos mig...
Avatar billede nico26 Nybegynder
19. august 2001 - 22:46 #13
det er her fejlen er:

TextField field = new TextField(10);

de re-erklærer field. linen skal se sådan ud:

field = new TextField(10);
Avatar billede yallah Nybegynder
20. august 2001 - 16:21 #14
Mange tak!
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