Avatar billede gigabooster Nybegynder
04. maj 2002 - 13:02 Der er 1 løsning

Mine knapper virker ikke

Hvad skal jeg gøre for at få en knap aktiveret i java???
Jeg har opretter knapperne, og vil du gerne have den ene knap til at kunne gøre noget når jeg trykker på den, ved at kalde en metode...
min kode ser således ud:
import java.awt.*;
import java.awt.event.*;
import java.util.*;



class SimpelVindue extends Frame{

    // opsætter hvordan dette vindue skal se ud
    public SimpelVindue() {

        // bør egentlig kun stå til sidst ellers bliver
        // knapperne ikke vist før senere (minimize/maximize)
        // vindue
        setTitle("Opret Ansat");
        setSize(450,450);
        setVisible(true);

        // sæt altid layout
        setLayout(new BorderLayout());

        // Lukker HELE programmet
        addWindowListener(  new WindowAdapter()    {
                                    public void windowClosing(WindowEvent e) {
                                        System.exit(0);
                                    }
                                }
                            );
                        // Dette er ikke en hensigtsmæssig måde at implementere
                        // vindues-lukning. SE i Vinduer.java eller
                        // AvancedVinduer.java


        // Lede tekst til vindue
        Label labVelkommen = new Label("Her opretter, søger og ændrer du en medarbejder");

        add("North", labVelkommen);

        // oprettes til at 'fordele' knapperne
        Panel buttons = new Panel();

        // set altid layout!!
        buttons.setLayout(new FlowLayout());

        Button butOpret  = new Button("Opret");
        Button butGem = new Button("Gem");
        Button butOpdater  = new Button("Opdater");
        Button butSoeg  = new Button("Søg");

        // knapperne sættes ind i Panel
        buttons.add("South", butOpret);
        buttons.add("South", butGem);
        buttons.add("South", butOpdater);
        buttons.add("South", butSoeg);

        // sæt knapperne i panelet ind på vinduet
        add("South", buttons);


        // LÆG mærke til at disse knapper 'bare' bliver vist
        // der sker ikke noget ved at trykke på dem
        // så skal du huske 1) addActionListener(this)
        //                  2) implemenets ActionListener dvs.
        //                        actionPerformed-metoden

        //Her bliver knappen aktiveret
        public void Action(ActionEvent butOpret) {
            butOpret.getSource() == System.out.println("DEN VIRKER!!");
        }



        setVisible(true); // skal til sidst
    }
    static public void main (String[] args){
        new SimpelVindue();
    }
}

nogle der kan forklare det lidt enkelt.. er ikke en haj til java.. håber virkelig nogle kan hjælpe
Avatar billede conrad Nybegynder
04. maj 2002 - 14:01 #1
Der er mange måder at gøre det på. En måde er følgende
1. tilføj "implements ActionListener" til din klasse definition
2. Gør dine Buttons globalt kendte for klasse
3. opret dine knapper og tilføj ActionListeneren til dem
4. tilføj metoden public void actionPerformed(ActionEvent e) til klassen. Når du implementerer ActionListener interfacet skal du have denne metode.
5. du kan nu reagere på ActionEvents i denne metode.

import java.awt.*;
import java.awt.event.*;
import java.util.*;



class SimpelVindue extends Frame implements ActionListener
{

    // opsætter hvordan dette vindue skal se ud
   
    Button butGem;//global
    Button butOpret;
     
    public SimpelVindue()
    {

        // bør egentlig kun stå til sidst ellers bliver
        // knapperne ikke vist før senere (minimize/maximize)
        // vindue
        setTitle("Opret Ansat");
        setSize(450,450);
        setVisible(true);

        // sæt altid layout
        setLayout(new BorderLayout());

        // Lukker HELE programmet
        addWindowListener(  new WindowAdapter()    {
                                    public void windowClosing(WindowEvent e) {
                                        System.exit(0);
                                    }
                                }
                            );
                        // Dette er ikke en hensigtsmæssig måde at implementere
                        // vindues-lukning. SE i Vinduer.java eller
                        // AvancedVinduer.java


        // Lede tekst til vindue
        Label labVelkommen = new Label("Her opretter, søger og ændrer du en medarbejder");

        add("North", labVelkommen);

        // oprettes til at 'fordele' knapperne
        Panel buttons = new Panel();

        // set altid layout!!
        buttons.setLayout(new FlowLayout());

        butOpret  = new Button("Opret");
        //tilføj actionListener
        butOpret.addActionListener(this);
       
       
        butGem = new Button("Gem");
        butGem.addActionListener(this);
        Button butOpdater  = new Button("Opdater");
        Button butSoeg  = new Button("Søg");

        // knapperne sættes ind i Panel
        buttons.add("South", butOpret);
        buttons.add("South", butGem);
        buttons.add("South", butOpdater);
        buttons.add("South", butSoeg);

        // sæt knapperne i panelet ind på vinduet
        add("South", buttons);


        // LÆG mærke til at disse knapper 'bare' bliver vist
        // der sker ikke noget ved at trykke på dem
        // så skal du huske 1) addActionListener(this)
        //                  2) implemenets ActionListener dvs.
        //                        actionPerformed-metoden

        //Her bliver knappen aktiveret
        //public void Action(ActionEvent butOpret) {
          //  butOpret.getSource() == System.out.println("DEN VIRKER!!");
        //}



        setVisible(true); // skal til sidst
    }
   
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == butOpret)
        {
            System.out.println("butOpret");   
        }   
        else if(e.getSource() == butGem)
        {
            System.out.println("butGem");   
        }
        //fortsæt selv
    }
   
   
   
    static public void main (String[] args)
    {
        new SimpelVindue();
    }
}





import java.awt.*;
import java.awt.event.*;
import java.util.*;



class SimpelVindue extends Frame implements ActionListener
{

    // opsætter hvordan dette vindue skal se ud
   
    Button butGem;//global
    Button butOpret;
     
    public SimpelVindue()
    {

        // bør egentlig kun stå til sidst ellers bliver
        // knapperne ikke vist før senere (minimize/maximize)
        // vindue
        setTitle("Opret Ansat");
        setSize(450,450);
        setVisible(true);

        // sæt altid layout
        setLayout(new BorderLayout());

        // Lukker HELE programmet
        addWindowListener(  new WindowAdapter()    {
                                    public void windowClosing(WindowEvent e) {
                                        System.exit(0);
                                    }
                                }
                            );
                        // Dette er ikke en hensigtsmæssig måde at implementere
                        // vindues-lukning. SE i Vinduer.java eller
                        // AvancedVinduer.java


        // Lede tekst til vindue
        Label labVelkommen = new Label("Her opretter, søger og ændrer du en medarbejder");

        add("North", labVelkommen);

        // oprettes til at 'fordele' knapperne
        Panel buttons = new Panel();

        // set altid layout!!
        buttons.setLayout(new FlowLayout());

        butOpret  = new Button("Opret");
        //tilføj actionListener
        butOpret.addActionListener(this);
       
       
        butGem = new Button("Gem");
        butGem.addActionListener(this);
        Button butOpdater  = new Button("Opdater");
        Button butSoeg  = new Button("Søg");

        // knapperne sættes ind i Panel
        buttons.add("South", butOpret);
        buttons.add("South", butGem);
        buttons.add("South", butOpdater);
        buttons.add("South", butSoeg);

        // sæt knapperne i panelet ind på vinduet
        add("South", buttons);


        // LÆG mærke til at disse knapper 'bare' bliver vist
        // der sker ikke noget ved at trykke på dem
        // så skal du huske 1) addActionListener(this)
        //                  2) implemenets ActionListener dvs.
        //                        actionPerformed-metoden

        //Her bliver knappen aktiveret
        //public void Action(ActionEvent butOpret) {
          //  butOpret.getSource() == System.out.println("DEN VIRKER!!");
        //}



        setVisible(true); // skal til sidst
    }
   
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == butOpret)
        {
            System.out.println("butOpret");   
        }   
        else if(e.getSource() == butGem)
        {
            System.out.println("butGem");   
        }
        //fortsæt selv
    }
   
   
   
    static public void main (String[] args)
    {
        new SimpelVindue();
    }
}
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