import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class JPictureButton extends JPanel {
JLabel knopf;
Icon bild1, bild2, bild3;
String aufschrift;
private int x, y, width, height;
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(600, 600);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.add(new JPictureButton(0, 0, 500, 500, "/pic1.jpg", "pic2.jpg",
"pic3.jpg", "Hallo"));
f.setVisible(true);
}
public JPictureButton(int x, int y, int width, int height, String pfad1,
String pfad2, String pfad3) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.bild1 = new ImageIcon(getClass().getResource(pfad1));
this.bild2 = new ImageIcon(getClass().getResource(pfad2));
this.bild3 = new ImageIcon(getClass().getResource(pfad3));
this.setBounds(x, y, width, height);
this.setLayout(new FlowLayout());
knopf = new JLabel();
knopf.setIcon(bild1);
knopf.addMouseListener(new ChangeIcon());
add(knopf);
}
public JPictureButton(int x, int y, int width, int height, String pfad1,
String pfad2, String pfad3, String aufschrift) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.bild1 = new ImageIcon(getClass().getResource(pfad1));
this.bild2 = new ImageIcon(getClass().getResource(pfad2));
this.bild3 = new ImageIcon(getClass().getResource(pfad3));
this.aufschrift = aufschrift;
knopf = new JLabel();
knopf.setLayout(new FlowLayout());
knopf.setIcon(bild1);
knopf.setText(aufschrift);
knopf.setBounds(x, y, width, height);
knopf.setFont(new Font("Arial", Font.BOLD, 30));
knopf.setForeground(Color.BLACK);
knopf.setIconTextGap(-200);
knopf.addMouseListener(new ChangeIcon());
add(knopf);
}
public void setzeSchrift(String text, String schriftname, int art,
int groesse, Color farbe) {
knopf.setText(text);
knopf.setFont(new Font(schriftname, art, groesse));
knopf.setForeground(farbe);
knopf.setIconTextGap(-200);
}
@Override
public void addMouseListener(MouseListener m) {
super.addMouseListener(m);
knopf.addMouseListener(m);
}
@Override
public void removeMouseListener(MouseListener m) {
super.removeMouseListener(m);
knopf.removeMouseListener(m);
}
private class ChangeIcon implements MouseListener {
private boolean geklickt = false;
private boolean verlassen = false;
@Override
public void mouseClicked(MouseEvent e) {
// na wenn hier nichts steht...gibt es halt kein Klickevent, außer
// wenn die Mouse gedrückt wird...
}
@Override
public void mouseEntered(MouseEvent e) {
knopf.setIcon(bild2);
verlassen = false;
}
@Override
public void mouseExited(MouseEvent e) {
if (!geklickt) {
knopf.setIcon(bild1);
knopf.setIconTextGap(-200);
}
verlassen = true;
}
@Override
public void mousePressed(MouseEvent e) {
knopf.setIcon(bild3);
geklickt = true;
}
@Override
public void mouseReleased(MouseEvent e) {
knopf.setIcon(bild2);
geklickt = false;
if (verlassen) {
knopf.setIcon(bild1);
}
}
}
}