gpt4 book ai didi

java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上

转载 作者:行者123 更新时间:2023-12-01 11:16:37 25 4
gpt4 key购买 nike

一直在尝试和搜索,但找不到任何解决方案,所以我最终决定放弃并进一步询问......

创建 javafx 应用程序,我在 TilePane 中加载图 block 。

这些图 block 可点击并进入其各自内容的详细信息页面。

在每个图 block 上,如果它们确实属于某个包,我会显示包名称,该名称也是可单击的,并会导致显示该特定包内容的页面。

这意味着容器、图 block (即 Pane )是可单击的,并且在其顶部我有一个也可单击的标签。发生的情况是,当我单击标签时,它还会触发 Pane onMousePressed()...这是图 block 创建代码的一部分,该部分重点关注 onMousePressed()。我尝试通过双击使 Pane 使用react,通过单击使标签使用react,它可以工作,但我想通过单击打开 Pane 。

如果您有任何解决此问题的想法,我将非常感激。

public DownloadTile (Downloadable upload, MainApp mainApp) {
_mainApp = mainApp;
_upload = upload;
_tile = new Pane();
_tile.setPrefHeight(100);
_tile.setPrefWidth(296);
_tile.setStyle("-fx-background-color: #ffffff;");
_tile.setCursor(Cursor.HAND);
}

public void refresh() {
_tile.getChildren().clear();
_tile.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.isPrimaryButtonDown() /*&& event.getClickCount() == 2*/) {
_mainApp.showDownloadDialog(dt, _upload);
}
}
});

if (_upload.getPack() != null) {
Label pack = new Label();
pack.setText(_upload.getPack());
pack.getStyleClass().add("pack-link");
pack.setCursor(Cursor.HAND);
pack.relocate(10, 48);

_tile.getChildren().add(pack);

pack.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.isPrimaryButtonDown()) {
_mainApp.showPackPage(_upload);
}
}
});
}
}

最佳答案

您的标签将首先收到鼠标点击(因为它位于顶部),因此在处理完点击后,您可以使用“consume”阻止它沿着链向下传递:

pane.setOnMouseClicked(
(Event event) -> {

// process your click here

System.out.println("Panel clicked");
pane.requestFocus();
event.consume();
};

关于java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com