Java 调整组件逻辑的大小
我是Java新手。我想在JavaFX中实现resize事件,但我的问题更像是逻辑问题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
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时,它是余数。你到底想干什么?