Java 调整组件逻辑的大小

Java 调整组件逻辑的大小,java,javafx,Java,Javafx,我是Java新手。我想在JavaFX中实现resize事件,但我的问题更像是逻辑问题 bp.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent me) { if (me.getButton().equals(MouseButton.PRIMARY) && me

我是Java新手。我想在JavaFX中实现resize事件,但我的问题更像是逻辑问题

bp.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent me) {

                if (me.getButton().equals(MouseButton.PRIMARY) && me.getClickCount() % 1 == 0) {

                    bp.setPrefSize(480, 280);
                    bp.setMaxSize(480, 280);

                }

                if (me.getButton().equals(MouseButton.PRIMARY) && me.getClickCount() % 2 == 0) {
                    bp.setPrefSize(320, 180);
                    bp.setMaxSize(320, 180);

                }
            }
        });
bp.setOnMouseClicked(新建EventHandler()){
@凌驾
公共无效句柄(MouseEvent me){
如果(me.getButton().equals(MouseButton.PRIMARY)和&me.getClickCount()%1==0){
bp.setPrefSize(480280);
bp.setMaxSize(480280);
}
如果(me.getButton().equals(MouseButton.PRIMARY)和&me.getClickCount()%2==0){
bp.setPrefSize(320180);
bp.setMaxSize(320180);
}
}
});
我的我的代码当我用鼠标在
bp
componet上单击一个时,大小将展开。当我双击组件时,它会再次收缩到正常大小


我希望以这种方式编辑代码:我希望在结束后单击组件并展开它。当我再次单击以缩回零部件时。您能告诉我需要如何将逻辑修改到代码中吗?

看起来像一个简单的
如果
-
否则
可以:

if (me.getButton().equals(MouseButton.PRIMARY) && me.getClickCount() % 2 == 0) {
    bp.setPrefSize(480, 280);
    bp.setMaxSize(480, 280);
} else {
    bp.setPrefSize(320, 180);
    bp.setMaxSize(320, 180);
}
但是,我认为更好的选择是使用
扩展的
布尔字段,您可以在
句柄中使用该字段:

if (me.getButton().equals(MouseButton.PRIMARY) && isExpanded) {
    // shrink:
    bp.setPrefSize(320, 180);
    bp.setMaxSize(320, 180);
    isExpanded = false;
} else {
    // expand:
    bp.setPrefSize(480, 280);
    bp.setMaxSize(480, 280);
    isExpanded = true;
}

看起来像一个简单的
if
-
else
可以:

if (me.getButton().equals(MouseButton.PRIMARY) && me.getClickCount() % 2 == 0) {
    bp.setPrefSize(480, 280);
    bp.setMaxSize(480, 280);
} else {
    bp.setPrefSize(320, 180);
    bp.setMaxSize(320, 180);
}
但是,我认为更好的选择是使用
扩展的
布尔字段,您可以在
句柄中使用该字段:

if (me.getButton().equals(MouseButton.PRIMARY) && isExpanded) {
    // shrink:
    bp.setPrefSize(320, 180);
    bp.setMaxSize(320, 180);
    isExpanded = false;
} else {
    // expand:
    bp.setPrefSize(480, 280);
    bp.setMaxSize(480, 280);
    isExpanded = true;
}

好吧,你需要跟踪状态。不熟悉JavaFX,但假设bp的类是可以编辑的,我会将其更新为以下内容:

class BP{
    public boolean expanded = false; //this should be true if default state is expanded

    public void toggleExpanded(){
        if(expanded){
            this.setPrefSize(480, 280);
            this.setMaxSize(480, 280);
        }else{
            this.setPrefSize(320, 180);
            this.setMaxSize(320, 180);
        }
    }

    //rest of BP class
}
然后让你的听众如下所示:

    bp.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent me) {

            if (me.getButton().equals(MouseButton.PRIMARY)) {
                bp.toggleExpanded();
            }
        }
    });
bp.setOnMouseClicked(新建EventHandler()){
@凌驾
公共无效句柄(MouseEvent me){
if(me.getButton().equals(MouseButton.PRIMARY)){
toggleExpanded();
}
}
});

嗯,您需要跟踪状态。不熟悉JavaFX,但假设bp的类是可以编辑的,我会将其更新为以下内容:

class BP{
    public boolean expanded = false; //this should be true if default state is expanded

    public void toggleExpanded(){
        if(expanded){
            this.setPrefSize(480, 280);
            this.setMaxSize(480, 280);
        }else{
            this.setPrefSize(320, 180);
            this.setMaxSize(320, 180);
        }
    }

    //rest of BP class
}
然后让你的听众如下所示:

    bp.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent me) {

            if (me.getButton().equals(MouseButton.PRIMARY)) {
                bp.toggleExpanded();
            }
        }
    });
bp.setOnMouseClicked(新建EventHandler()){
@凌驾
公共无效句柄(MouseEvent me){
if(me.getButton().equals(MouseButton.PRIMARY)){
toggleExpanded();
}
}
});

MouseEvent.getClickCount
()返回文档中所述的在小时间间隔内对小区域的单击次数。您需要将状态(正常或扩展)存储在一个变量中,并相应地切换大小和状态。

MouseEvent.getClickCount
()返回文档中所述的小时间间隔内小区域上的单击次数。您需要将状态(正常或扩展)存储在变量中,并相应地切换大小和状态。

n%1
始终为
0
(n%1)对于所有整数都将为0。当你把某物除以1时,它是余数。你到底想做什么?
n%1
总是
0
(n%1)对于所有整数都是0。当你把某物除以1时,它是余数。你到底想干什么?