我想创建一个自定义按钮,有两个状态按下或不按下,就像一个切换按钮。我有两个图像要做这件事(按下和不按下),那么我如何创建按钮并将其与我的图像一起显示?该按钮必须采用图像的大小。
我没有使用FXML。谢谢你的帮助。
发布于 2012-05-09 23:12:56
你只需要创建你自己的继承自parent的类。在上面放置一个ImageView,在mousedown和mouse事件上只会改变ImageView的图像。
public class ImageButton extends Parent {
private static final Image NORMAL_IMAGE = ...;
private static final Image PRESSED_IMAGE = ...;
private final ImageView iv;
public ImageButton() {
this.iv = new ImageView(NORMAL_IMAGE);
this.getChildren().add(this.iv);
this.iv.setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent evt) {
iv.setImage(PRESSED_IMAGE);
}
});
// TODO other event handlers like mouse up
}
}
发布于 2015-08-16 19:40:41
前面两个答案的组合起到了作用。谢谢。一个继承自Button的新类。注意:应该在显示按钮之前调用updateImages()。
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;
public class ImageButton extends Button {
public void updateImages(final Image selected, final Image unselected) {
final ImageView iv = new ImageView(selected);
this.getChildren().add(iv);
iv.setOnMousePressed(new EventHandler<MouseEvent>() {
public void handle(MouseEvent evt) {
iv.setImage(unselected);
}
});
iv.setOnMouseReleased(new EventHandler<MouseEvent>() {
public void handle(MouseEvent evt) {
iv.setImage(selected);
}
});
super.setGraphic(iv);
}
}
https://stackoverflow.com/questions/10518458
复制相似问题