2017-08-29 13 views
0

グリッドパネルを正しく設定しました。しかし、各セルにイベントハンドラを配置する方法はありますか?マウスのダブルクリックや右クリックのように。 誰かが私に例を挙げてくれますか?ありがとうございました!GridPaneセルのJavafxイベントハンドラ

+2

GridPaneに追加するノードにイベントハンドラを追加します。 – ItachiUchiha

答えて

0

あなたが正確に何をしたい指定しませんが、私は、この例では、あなた

まず例(私はすべてのノードで同じイベントを追加)

/* 
* 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); 
関連する問題