You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zweiundvierzig-JavaFX/Button.java

95 lines
2.4 KiB
Java

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);
}
}