|
|
|
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Diese Klasse stellt einen Button dar.
|
|
|
|
*
|
|
|
|
* @author Felix Stupp
|
|
|
|
* @version 26.04.2016
|
|
|
|
*/
|
|
|
|
public class Button extends GUI_Interface {
|
|
|
|
|
|
|
|
boolean autoSize = true;
|
|
|
|
Color foreC = Color.WHITE
|
|
|
|
Color backC = Color.BLACK
|
|
|
|
int textSize = 1;
|
|
|
|
String text = "";
|
|
|
|
|
|
|
|
ButtonEvent handler;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Erstellt einen Button mit dem gegebenen Objekt als Event-Handler.
|
|
|
|
*
|
|
|
|
* @param h Der Handler mit dem Interface ButtonEvent implementiert.
|
|
|
|
*/
|
|
|
|
public Button(ButtonEvent h) {
|
|
|
|
handler = h;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fragt ab, ob ein Klick auf den Button gekommen ist.
|
|
|
|
*/
|
|
|
|
public void act() {
|
|
|
|
if(Greenfoot.mouseClicked(this)) {
|
|
|
|
handler.buttonClicked(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getAutoSize() {
|
|
|
|
return autoSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setAutoSize(boolean b) {
|
|
|
|
autoSize = b;
|
|
|
|
if(autoSize) {
|
|
|
|
redraw();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getTextSize() {
|
|
|
|
return textSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setTextSize(int s) {
|
|
|
|
if(textSize != s && s > 0) {
|
|
|
|
textSize = s;
|
|
|
|
redraw();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getText() {
|
|
|
|
return text;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setText(String s) {
|
|
|
|
if(text != s) {
|
|
|
|
text = s;
|
|
|
|
redraw();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void redraw() {
|
|
|
|
GreenfootImage tI = new GreenfootImage(text,textSize,foreC,backC);
|
|
|
|
GreenfootImage corner = new GreenfootImage("images/Button_Corner.png");
|
|
|
|
int csx = corner.getWidth();
|
|
|
|
int csy = corner.getHeight();
|
|
|
|
GreenfootImage side = new GreenfootImage("images/Button_Side.png");
|
|
|
|
if(autoSize) {
|
|
|
|
sx = tI.getWidth() + (csx * 2);
|
|
|
|
sy = tI.getHeight() + (csy * 2);
|
|
|
|
}
|
|
|
|
GreenfootImage all = new GreenfootImage(sx,sy);
|
|
|
|
all.drawImage(corner,0,0);
|
|
|
|
corner.rotate(90);
|
|
|
|
all.drawImage(corner,sx-csx,0);
|
|
|
|
corner.rotate(90);
|
|
|
|
all.drawImage(corner,sx-csx,sy-csy);
|
|
|
|
corner.rotate(90);
|
|
|
|
all.drawImage(corner,0,sy-csy);
|
|
|
|
for(int i = csx; i < (sx-csx+1); i++) {
|
|
|
|
|
|
|
|
}
|
|
|
|
all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2);
|
|
|
|
setImage(all);
|
|
|
|
}
|
|
|
|
}
|