Applet Bild als Button setzen...

Entweder du setzt das Bild in einen Button ein oder du packst das Bild in ein Panel/Label und registrierst darauf einen MouseListener und überschreibst die Methode mouseClicked(...)
 
Wüßte ich jetzt auch nicht.
Aber was spricht gegen einen Button mit einem Bild?
Mit ButtonUI oder so, kann man sicher den Button so zeichnen, daß er nicht gezeichnet wird, sondern nur das Bild.
 
Wenn ich einen Buttton mit

Code:
     	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:
	@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
 
Ein JButton kann ein ImageIcon darstellen, dann noch die Border anpassen und schon hast du ein Bild.
Der Nachteil an der Methode ist, dass die MouseOver- und MouseClicked- Darstellungen damit natürlich noch nicht vernünftig realisiert sind.



Java:
ImageIcon bild = new ImageIcon(getClass().getResource("/bilder/knopf.jpg"));//hier natürlich den Pfad zu deinem Bild angeben
JButton btn = new JButton(bild);
btn.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
btn.addActionListener(new ActionListener(){

          public void actionPerformed(ActionEvent e){
          //mach hier was du willst :P

    }
});

In diesem Fall bietet es sich wirklich an, einen MouseListener an einem Panel/Label zu registrieren und ein wenig mehr Hand anzulegen.
Gruß Vanny

PS: gibt es eine Möglichkeit den Text einzurücken, wenn man den Code direkt hier im Forumformular zusammentippt? ... Tab geht ja leider nicht🙁
 
Zuletzt bearbeitet von einem Moderator:
Code:
     	Button buttonSp = new Button("");
    	Button buttonMp = new Button("");

Wo hast Du den Teil stehen? In einer Methode oder außerhalb?

Es sollte gewöhnlich so aussehen, um mal Deinen Quellcodeteil als Vorlage zu nehmen:

Java:
class MyClass extends Panel {

  Button buttonSp;
  Button buttonMp;

  public MyClass() {

         buttonSp = new 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);

  }

  @Override
  public void actionPerformed(ActionEvent event) {

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

}
 
Java:
@Override
  public void actionPerformed(ActionEvent event) {
 
     if(event.getSource() == buttonSp)
        {
          statics.mode = "Sp";
        }
     if(event.getSource() == buttonMp)
        {
      statics.mode = "Mp";
     }
    repaint();
   }

Das ist dein Code. Man sollte ihn aber überarbeiten

Java:
 @Override
  public void actionPerformed(ActionEvent event) {
 
     if(event.getActionCommand().equals("anyCommand1"))
        {
          statics.mode = "Sp";
        }
     if(event.getActionCommand().equals("anyCommand2"))
        {
      statics.mode = "Mp";
     }
    repaint();
   }

Du müsstest den Button noch mit der Methode setActionCommand("anyCommand") ein eindeutigen String übergeben, nachdem du überprüfen willst, ist es dein Button. Am besten den Namen des Buttons als Command übergeben. Dann sollte es funzen. Hatte es auch schon einmal mit der getSource()-Methode versucht, aber bei einem reinen ActionListener ist das komfortabler als die getSource()-Variante.
 

Zurück
Oben