Hallo zusammen,
ich versuche mich gerade etwas in Java zurechtzufinden und habe ein Problem beim Ändern von Bildern auf Buttons. In Foren oder Videos habe ich einige Infos zum Erstellen von Bildern auf Buttons gefunden und auch wie ich mit einem ActionListener diese ändern kann. Ich scheitere allerdings gerade daran, durch Anwählen des immer gleichen Buttons, ein neues Bild auf dem Button zu erzeugen. Ich hatte mir dabei folgende Vorgehensweise überlegt:
(Der leere Button soll durch Benutzung selber das Bild La.png bekommen, nach neuerlichem Anwählen das Bild Mk.png und beim nächsten Klick wieder leer sein. Dies soll dann beliebig wiederholt werden können.)
Der Button ändert aber immer nur einmal das Bild, auch nach wiederholtem Betätigen des Buttons. Ich hatte versucht mit Hilfe einer for- oder while-Schleife die if-Schleifen aktiv zu halten, was aber (natürlich) zu einer Endlosschleife führt, da für das Programm kein Ende vorgesehen ist.
Schon einmal vielen Dank im Voraus.
ich versuche mich gerade etwas in Java zurechtzufinden und habe ein Problem beim Ändern von Bildern auf Buttons. In Foren oder Videos habe ich einige Infos zum Erstellen von Bildern auf Buttons gefunden und auch wie ich mit einem ActionListener diese ändern kann. Ich scheitere allerdings gerade daran, durch Anwählen des immer gleichen Buttons, ein neues Bild auf dem Button zu erzeugen. Ich hatte mir dabei folgende Vorgehensweise überlegt:
(Der leere Button soll durch Benutzung selber das Bild La.png bekommen, nach neuerlichem Anwählen das Bild Mk.png und beim nächsten Klick wieder leer sein. Dies soll dann beliebig wiederholt werden können.)
Java:
public class Main {
public static void main(String[] args) {
Icon la = new ImageIcon("La.png");
Icon mk= new ImageIcon("Mk.png");
jf.setSize(530,460);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLocation(500,300);
jf.setTitle("Fenster");
jf.setResizable(false);
jf.setLayout(null);
JButton but1 = new JButton();
but1.setBounds(10, 10, 90, 90);
jf.add(but1);
but1.setBackground(Color.WHITE);
if (but1.getIcon() == null) {but1.addActionListener(new Aktleer());}
if (but1.getIcon() == la) {but1.addActionListener(new Aktla());}
if (but1.getIcon() == mk) {but1.addActionListener(new Aktmk());}
}
}
class Aktleer implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Icon la = new ImageIcon("La.png");
((JButton)e.getSource()).setIcon(la);
}
}
class Aktla implements ActionListener{
@Override
public void actionPerformed(ActionEvent f) {
Icon mk= new ImageIcon("Mk.png");
((JButton)f.getSource()).setIcon(mk);
}
}
class Aktmk implements ActionListener{
@Override
public void actionPerformed(ActionEvent g) {
((JButton)g.getSource()).setIcon(null);
}
}
Der Button ändert aber immer nur einmal das Bild, auch nach wiederholtem Betätigen des Buttons. Ich hatte versucht mit Hilfe einer for- oder while-Schleife die if-Schleifen aktiv zu halten, was aber (natürlich) zu einer Endlosschleife führt, da für das Programm kein Ende vorgesehen ist.
Schon einmal vielen Dank im Voraus.