Gå til innhold

Opprette JButton's uten felt varibaler, og legg til ActionListener


Anbefalte innlegg

Om jeg legger til en JButton til JPanel på denne måten

 

panal.add(new JButton("Ok",new ImageIcon("src/icon/ok.png")));

 

er det mulig og bruke

 

public void actionPerformed(ActionEvent e) {

	if(e.getSource() == ??)
}

 

hvor da ?? er ønsket referagnse

Endret av Kargan
Lenke til kommentar
Videoannonse
Annonse

package javaapplication3;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class ButtonTest extends JFrame {
public ButtonTest() {
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setLocation(200,200);
	getContentPane().setLayout(new FlowLayout());

	JButton button = new JButton("Klikk her");
	button.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
       System.out.println("Hei!");
		}});
	getContentPane().add(button);
}

public static void main(String args[]) {
	ButtonTest window = new ButtonTest();
	window.pack();
   window.setVisible(true);
}
}

 

Radlekatt

Lenke til kommentar

package javaapplication3;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class ButtonTest extends JFrame {
public ButtonTest() {
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setLocation(200,200);
	getContentPane().setLayout(new FlowLayout());

	JButton button = new JButton("Klikk her");
	button.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
       System.out.println("Hei!");
		}});
	getContentPane().add(button);
}

public static void main(String args[]) {
	ButtonTest window = new ButtonTest();
	window.pack();
   window.setVisible(true);
}
}

 

Radlekatt

 

Det er akkurat dette har lyst til og unngå, har enn del knapper og vil legge dem til uten og måtte ha 10-15 feltvariabler.

Lenke til kommentar

Trodde

 

panel.add(new JButton("Ello").addActionListener( new ActionListener() {
    	public void actionPerformed(ActionEvent e) {	
    		System.out.println("ey");
    	}
    }));

 

Skulle funke, men det gjorde det ikke.

 

The method add(Component) in the type Container is not applicable for the arguments (void)

 

Litt usikker da :)

Endret av Cemi
Lenke til kommentar

Om jeg legger til en JButton til JPanel på denne måten

 

panal.add(new JButton("Ok",new ImageIcon("src/icon/ok.png")));

 

er det mulig og bruke

 

public void actionPerformed(ActionEvent e) {

	if(e.getSource() == ??)
}

 

hvor da ?? er ønsket referagnse

 

Ingen variabler + anonym lytter

panel.add(new JButton(new AbstractAction("Ok", new ImageIcon("src/icon/ok.png")) {
           public void actionPerformed(ActionEvent e) {
              System.out.println("Tadaa");
           }
        }));

Endret av HV
Lenke til kommentar

Om jeg legger til en JButton til JPanel på denne måten

 

panal.add(new JButton("Ok",new ImageIcon("src/icon/ok.png")));

 

er det mulig og bruke

 

public void actionPerformed(ActionEvent e) {

	if(e.getSource() == ??)
}

 

hvor da ?? er ønsket referagnse

 

Ingen variabler + anonym lytter

panel.add(new JButton(new AbstractAction("Ok", new ImageIcon("src/icon/ok.png")) {
           public void actionPerformed(ActionEvent e) {
              System.out.println("Tadaa");
           }
        }));

 

Intresangt, men hvordan blir det nåe enn legger inn til fler knapper med forskjelige funksjoner?

 

Intresangt, men hvordan blir det da når enn legger til fler knapper?

Endret av Kargan
Lenke til kommentar

Husker at jeg lærte ting på skolen som dette; Og det er en særdeles dårlig praksis... Blir mye lettere å skrive feil.

if(e.getSource() == btnOne){

     }  else if(e.getSource() == btnTwo){
     }  else if(e.getSource() == btnThree){
     }  else if(e.getSource() == btnFour){
     }  else if(e.getSource() == btnFive){

     }

 

Jeg synes også at indre anonyme klasser er lite oversiktlig og foretrekker private indre klasser.

 

Også mye enklere å skille ut for gjenbruk hvis action skal brukes flere plasser.

 

  panel.add(new JButton(new OkAction()));
     panel.add(new JButton(new FooAction()));
     panel.add(new JButton(new BarAction()));

 

   private final class OkAction extends AbstractAction{
     private OkAction() {
        super("Ok", new ImageIcon("src/icon/ok.png"));
     }

     public void actionPerformed(ActionEvent e) {
        System.out.println("TestSDF$OkAction.actionPerformed");
     }
  }
  private final class FooAction extends AbstractAction{
     private FooAction() {
        super("Tadaa", new ImageIcon("src/icon/ok.png"));
     }

     public void actionPerformed(ActionEvent e) {
        System.out.println("TestSDF$FooAction.actionPerformed");
     }
  }

  private final class BarAction extends AbstractAction{
     private BarAction() {
        super("Tadaa", new ImageIcon("src/icon/ok.png"));
     }

     public void actionPerformed(ActionEvent e) {
        System.out.println("TestSDF$BarAction.actionPerformed");
     }
  }

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...