当前位置: 首页 > 知识库问答 >
问题:

GridPane单元格上的Javafx事件处理程序[副本]

王昊
2023-03-14

我把网格窗格设置得很好。但如何在每个单元格中放置事件处理程序?就像鼠标双击和右键单击一样。谁能给我举个例子吗?非常感谢。

共有1个答案

白越
2023-03-14

您并没有具体说明您想要什么,但我希望这些示例可以帮助您

第一个示例(我为所有节点添加了相同的事件)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package stackover;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane;

/**
 *
 * @author Ala_Eddine
 */
public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;
    @FXML
    private GridPane gridPane;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        addGridEvent();

    }

    private void addGridEvent() {
        gridPane.getChildren().forEach(item -> {
            item.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                    if (event.getClickCount() == 2) {
                        System.out.println("doubleClick");
                    }
                    if (event.isPrimaryButtonDown()) {
                        System.out.println("PrimaryKey event");
                    }

                }
            });

        });
    }

**}

第二个示例**

private void addGridEvent() {

        Button button = new Button("hi");
        //You can use OnAction 
        button.addEventHandler(EventType.ROOT, (event) -> {
            if (event.getEventType() == ActionEvent.ACTION) {
                System.out.println("ActionEvent");
            }
        });
        gridPane.getChildren().add(button);
 类似资料:
  • 我有一个学校项目或类似的东西,我试图为用户制作一个注册面板。当用户点击注册时,这个面板会打开。它看起来像这样。 我想做的是禁用创建按钮,只有在对话框上有3个检查时才会启用。 我在对话框上使用GridPane,我在考虑返回这些单元格上的某些节点(检查是图像视图),并检查条件是否为真。然而,我不知道如何从GridPane返回节点。如果你有其他方法来解决这个问题,也没关系。 这是代码的相关部分。

  • 问题内容: 我在JavaFX中有一个舞台,可以通过多种方式关闭该舞台,方法是单击红色(X)或通过一个调用 无论舞台如何关闭,我都希望在舞台关闭之前(或之后)执行操作。 如果我使用以下代码: 然后当我单击(X)时调用处理程序,但当我调用 不同之处在于,他希望在整个应用程序关闭时调用处理程序,因此可以覆盖的方法。但是,我并没有关闭整个应用程序,只是一个阶段。并且没有重写的方法。 谢谢你的帮助。 问题答

  • 我正在开发一个小应用程序,在创建菜单栏时遇到了一个问题。这是我的开始方法: 我遇到的问题在代码的这一部分: 我试图从数组列表中创建子菜单的条目。这些数据从数据库中获取,并以数组列表的形式返回。除了pairNameMenu.getItems()之外,我没有找到其他方法来做菜单项。add(new MenuItem(item));在for循环中。 现在我想处理项目中的点击,但我不知道如何操作。我试过使用

  • 我在JavaFX中有一个阶段,可以通过多种方式关闭,通过单击红色(X)或通过调用的按钮 无论舞台如何关闭,我都想在舞台关闭之前(或关闭时)执行一个动作。 如果我使用以下代码: 然后,当我单击(X)时调用处理程序,但当我调用<code>myStage.close()</code>时不会调用 这与这个问题讨论的问题相同(有一个关键区别):JavaFX:Stage-close-handler 不同之处在

  • 我有一个TableView,它几乎没有可编辑的列。在JavaFX Scene Builder for editable table列的on Edit Commit中,我映射了一个FXML控制器方法,它调用DAO服务从数据库返回数据。问题是编辑表格单元格后,未调用事件处理程序方法。我希望在编辑单元格数据后按Tab键时触发此事件。怎么做?请建议

  • 我是javafx新手,目前正在做菜单,menuitems。我希望覆盖显示上下文菜单的默认事件,即使菜单没有被按下,但鼠标悬停在它上面,而相邻菜单的上下文菜单显示时,当前仍会显示。这发生在每个应用程序中,因为它非常方便。但由于某种原因,我不需要它。我试图捕获菜单上的鼠标事件,这样我就可以相应地工作,但什么也没发生。 这里是我想要添加此行为的菜单。