Applet button reagiert nicht

Status
Nicht offen für weitere Antworten.

AintLarry

Mitglied
Wenn ich einen Buttton mit

Code:

Java:
     	Button buttonSp = new Button("");
    	Button buttonMp = new Button("");

         buttonSp.setSize(397, 61);
         buttonMp.setSize(397, 61);
         buttonSp.setLocation(231, 162);
         buttonMp.setLocation(231, 262);
         buttonSp.setVisible(false);
         buttonMp.setVisible(false);
         
         buttonSp.addActionListener(this);
         buttonMp.addActionListener(this);

         add(buttonSp);
         add(buttonMp);

initialisiere und hinzufüge

und das event dann so...

Code:

Java:
	@Override
	public void actionPerformed(ActionEvent event) {

		if(event.getSource() == buttonSp)
		{
			statics.mode = "Sp";
		}
		if(event.getSource() == buttonMp)
		{
			statics.mode = "Mp";
		}
		repaint();
	}

auslesen will, passiert beim buttonklicken nichts,
ja ich weiss er ist unsichtbar aber ich weiss genau wo er sich befindet, ausserdem reagiert er auch nicht wenn er sichtbar ist
 
Zuletzt bearbeitet von einem Moderator:
Probier mal, anstatt e.getEventSource() nicht mit == sondern mit equals() zu vergleichen!
 
du meinst so oder?
Code:
		if(event.getSource().equals(buttonSp))
		{
			statics.mode = "Sp";
		}
		if(event.getSource().equals(buttonMp))
		{
			statics.mode = "Mp";
		}

geht leider genau so wenig
 
Benutz doch bitte die [c]
Java:
[/c]-Tags für Quellcode.

Der Tipp mit equals() ist nicht zielführend. Identitätsvergleich ist schon in Ordnung.

Die Frage ist eher, woher du weißt, dass nichts passiert. Und liefer doch bitte ein KSKB.

PS: Ein Button kann natürlich nicht auf einen Klick reagieren, wenn er unsichtbar ist.
 
ok, werde ich in zukunft beachten, was ist ein KSKB??

woher ich weiss das nichtsn passiert?

weil an in der paint methode des applets die "mode" variable ausgegeben wird und unverändert auf dem standartwert ist
 
Mach doch mal System.out.println("Hier bin ich!"); vor die vergleiche, danach das mit einer anderen Ausgabe noch in den beiden Vergleichen!
 
ok, das hat mir nun die erkenntniss gebracht das das event nichtmal in der actionperformed methode ankommt, also auch kein vergleich stattfindet, nun ist also die frage warum wird das event nicht ausgelöst?
 
KSKB = kurzes selbstständiges kompilierbares Beispiel

Die Abkürzung müsste bei dir eigentlich gepunktet unterstrichen sein. Es sei denn, du nutzt einen exotischen Browser. :bae:
 
Kannst du villeicht mal die ganze Klasse zeigen?
Das ist seltsam, bist du sicher, dass du auf die selben Knöpfe drückst, die du da erstellst?
 
@xehpuk ja unterstrichen schon, aber nicht anklickbar :/

@triopsfreak die ganze klasse? sicher die ist sehr groß

@jgh jah stehen sie
 
Dann vielleicht einfach die Methode, wo die Knöpfe hinzugefügt werden und die ActionPerfomed Methode!
 
actionperformed methode:

Java:
	public void actionPerformed(ActionEvent event) {
		
		System.out.println("Test");

		if(event.getSource().equals(buttonSp))
		{
			statics.mode = "Sp";
		}
		if(event.getSource().equals(buttonMp))
		{
			statics.mode = "Mp";
		}
		repaint();
	}

die knöpfe werden in der paint methode hinzugefügt:

Java:
        if(statics.mode == "menu")
        {
        	g.setFont(statics.livePointFont);
        	
        	add(buttonSp);
        	add(buttonMp);
        	
        	g.drawImage (statics.menuBackGround, 0, 0, this);
        }

nur ein auschnitt,
und ja ich biom mir sicher das die buttons hinmzugefügt sind und statics.mode == "menu" ist
 
In der PaintMethode? Ich denke mal, dass da das Problem liegt...
Pack das ganze lieber in die init(), paint wird immer wieder aufgerufen, das wird das Problem sein...
 
ok dankesehr hat geklappt, nur nioch eine frage, wenn festgestellt wurde welcher button gedrückt wurde müssen beine verschwinden

deswegen hatte ich es auch erst in der paint methode da ists leicht,

wie kann ich buttons so wieder verschwinden lassen?

edit: hat sich erledigt, hab aus intuition mal remove benutz und geht...

nochmal danke für eure hilfe
 
Zuletzt bearbeitet:
War ich wohl etwas voreilig, hatte den button zum testen sichbar gemacht, wenn er allerdings mit setVisible(false) unsichtbar gemacht wird ist er nicht mehr klickbar, gibt es eine andere möglichkeit einen button unsichtbar aber trotzdem klickbar zu machen??

ja ich habe in eclipse die möglichkeiten durchgesucht
 
Dann zeichne das Bild in ein Panel und hänge an dieses Panel einen MouseListener oder MouseAdapter und überschreibe die mouseClicked()- oder die mousePressed()-Methode.
Beim Klick auf dieses Panel wird dann deine gewünschte Aktion ausgeführt werden.

Das Panel kann so aussehen:
Java:
import java.awt.*;
import java.awt.event.*;
 
public class PicturePanel extends Panel {
   private Image image;
 
   public PicturePanel() {
      image = getImage(getCodeBase(),"Bild.jpg");
      addMouseListener(new MouseAdapter() {
         public void mousePressed(MouseEvent e) {
            //deine Aktion programmieren
         }
      });
   }
 
   public void paint(Graphics g) {
      super.paint(g);
      if(image != null) {
         g.drawImage(image, 0, 0, this);
      }
   }
}

Wohl gemerkt für AWT und bei Verwendung in einem Applet.
 
Versuch es doch mal mit
Java:
setBackground(new Color(255, 255, 255, 0));
Mit dem letztem int gibst du den Alphap wert an, wenn der 0 ist, ist die Farbe durchsichtig!
 
Zwei-Fronten-Krieg ist bei uns nicht gerne gesehen.
*geschlossen*

Hier gehts weiter: [thread=124974]Applet Bild als Button setzen[/thread]
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben