首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaFX -创建带有图像的自定义按钮

JavaFX -创建带有图像的自定义按钮
EN

Stack Overflow用户
提问于 2012-05-09 22:45:40
回答 2查看 126.1K关注 0票数 23

我想创建一个自定义按钮,有两个状态按下或不按下,就像一个切换按钮。我有两个图像要做这件事(按下和不按下),那么我如何创建按钮并将其与我的图像一起显示?该按钮必须采用图像的大小。

我没有使用FXML。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2012-05-09 23:12:56

你只需要创建你自己的继承自parent的类。在上面放置一个ImageView,在mousedown和mouse事件上只会改变ImageView的图像。

代码语言:javascript
复制
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

    } 

}
票数 7
EN

Stack Overflow用户

发布于 2015-08-16 19:40:41

前面两个答案的组合起到了作用。谢谢。一个继承自Button的新类。注意:应该在显示按钮之前调用updateImages()。

代码语言:javascript
复制
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);
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10518458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档