标签的JavaFX鼠标单击事件

时间:2020-04-04 05:12:40

标签: java user-interface javafx pane

我正在尝试使用JavaFX构建一个简单的计划程序应用程序。我当前的目标是能够:

  1. 单击日历面板(已实施)
  2. 键入任务,按Enter键,并将其显示为Label(已实现)
  3. 单击当前放置的标签,然后将其从日历中删除。 (问题)

第3步是我遇到最大麻烦的地方。我相信我可以正确设置标签的鼠标事件,但是当我单击其中一个标签时,它将为面板运行鼠标事件。我需要一种方法来覆盖窗格的鼠标事件,以便可以使用标签鼠标事件,但是我不太确定该如何处理。任何反馈都很棒!

this.setOnMouseClicked(e -> 
    {
        TextField field = new TextField();
        this.getChildren().add(field);

        //sets field as a label
         field.setOnKeyPressed(new EventHandler<KeyEvent>() {
                @Override
                public void handle(KeyEvent key) {
                    KeyCode k = key.getCode();
                    if ((k.equals(KeyCode.ENTER))) {
                        Label lab = new Label(field.getText());
                        getChildren().add(lab);
                        getChildren().remove(field);
                    }
                }
            });

         //removes textfield and label
         field.setOnKeyPressed(new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent ke) {
                KeyCode kc = ke.getCode();
                if ((kc.equals(KeyCode.ESCAPE))) {
                    getChildren().remove(field);
                }
            }
        });      
    }); 
    if(lab != null)
    {
        lab.setOnMouseEntered(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                setStyle("-fx-background-color: #00FF00;");
            }
          });
    }

0 个答案:

没有答案
相关问题