Graphics 如何在javafx中使用鼠标绘制选定的gridpane范围

Graphics 如何在javafx中使用鼠标绘制选定的gridpane范围,graphics,javafx-2,gridpanel,Graphics,Javafx 2,Gridpanel,我想选择几个网格窗格单元格并更改它们的颜色 myGridPane.getChildren().get(indexer).setOnDragEntered(new EventHandler<DragEvent>(){ @Override public void handle(DragEvent t) { myGridPane.getChildren().get(ci).setStyle("-

我想选择几个网格窗格单元格并更改它们的颜色

        myGridPane.getChildren().get(indexer).setOnDragEntered(new EventHandler<DragEvent>(){
            @Override
            public void handle(DragEvent t) {
                myGridPane.getChildren().get(ci).setStyle("-fx-background-color:yellow;");   
            }                
        });
myGridPane.getChildren().get(索引器).setOnDragEnter(新事件处理程序(){
@凌驾
公共无效句柄(DragEvent t){
myGridPane.getChildren().get(ci).setStyle(“-fx背景色:黄色;”);
}                
});

我在网格窗格中添加了3个标签,并在每个标签中添加了一个单击处理程序。看看这是不是你想要的

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.RowConstraints;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class GridPaneStyle extends Application
{
@Override
public void start(final Stage stage)
{
    // create a grid with some sample data.
    GridPane grid = new GridPane();

    final Label l1 = new Label("1");
    final Label l2 = new Label("2");
    final Label l3 = new Label("3");


    l1.setOnMouseClicked(new EventHandler<MouseEvent>()
    {

        @Override
        public void handle(MouseEvent arg0)
        {
            l1.setStyle("-fx-background-color:yellow;");

        }
    });

    l2.setOnMouseClicked(new EventHandler<MouseEvent>()
    {

        @Override
        public void handle(MouseEvent arg0)
        {
            l2.setStyle("-fx-background-color:yellow;");

        }
    });


    l3.setOnMouseClicked(new EventHandler<MouseEvent>()
    {

        @Override
        public void handle(MouseEvent arg0)
        {
            l3.setStyle("-fx-background-color:yellow;");

        }
    });


    grid.addRow(0, l1, l2, l3);

    for (Node n : grid.getChildren())
    {
        Control control = (Control) n;
        control.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        control.setStyle("-fx-background-color: tomato; -fx-alignment: center;");
    }

    grid.setStyle("-fx-background-color: palegreen; -fx-padding: 2; -fx-hgap: 2; -fx-vgap: 2;");
    grid.setSnapToPixel(false);

    ColumnConstraints oneThird = new ColumnConstraints();
    oneThird.setPercentWidth(100 / 3.0);
    oneThird.setHalignment(HPos.CENTER);
    grid.getColumnConstraints().addAll(oneThird, oneThird, oneThird);
    RowConstraints oneHalf = new RowConstraints();
    oneHalf.setPercentHeight(100 / 2.0);
    oneHalf.setValignment(VPos.CENTER);
    grid.getRowConstraints().addAll(oneHalf, oneHalf);

    StackPane layout = new StackPane();
    layout.setStyle("-fx-background-color: white;");
    layout.getChildren().addAll(grid);
    stage.setScene(new Scene(layout, 600, 400));
    stage.show();

}

public static void main(String[] args)
{
    launch();
}
}
导入javafx.application.application;
导入javafx.event.EventHandler;
导入javafx.geometry.HPos;
导入javafx.geometry.VPos;
导入javafx.scene.Node;
导入javafx.scene.scene;
导入javafx.scene.control.control;
导入javafx.scene.control.Label;
导入javafx.scene.input.MouseEvent;
导入javafx.scene.layout.ColumnConstraints;
导入javafx.scene.layout.GridPane;
导入javafx.scene.layout.RowConstraints;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
公共类GridPaneStyle扩展了应用程序
{
@凌驾
公共作废开始(最后阶段)
{
//使用一些示例数据创建网格。
GridPane grid=新建GridPane();
最终标签l1=新标签(“1”);
最终标签l2=新标签(“2”);
最终标签l3=新标签(“3”);
l1.setOnMouseClicked(新的EventHandler()
{
@凌驾
公共无效句柄(MouseEvent arg0)
{
l1.设置样式(“-fx背景色:黄色;”);
}
});
l2.setOnMouseClicked(新的EventHandler()
{
@凌驾
公共无效句柄(MouseEvent arg0)
{
l2.设置样式(“-fx背景色:黄色;”);
}
});
l3.setOnMouseClicked(新的EventHandler()
{
@凌驾
公共无效句柄(MouseEvent arg0)
{
l3.设置样式(“-fx背景色:黄色;”);
}
});
grid.addRow(0,l1,l2,l3);
对于(节点n:grid.getChildren())
{
控制=(控制)n;
control.setMaxSize(Double.MAX\u值,Double.MAX\u值);
control.setStyle(“-fx背景色:番茄;-fx对齐:中心;”);
}
grid.setStyle(“-fx背景色:淡绿色;-fx填充:2;-fx hgap:2;-fx vgap:2;”);
grid.setSnapToPixel(假);
ColumnConstraints oneThird=新ColumnConstraints();
三分之一的设置百分比宽度(100/3.0);
三分之一设定值(HPos中心);
grid.getColumnConstraints().addAll(oneThird,oneThird,oneThird);
RowConstraints oneHalf=新的RowConstraints();
1/2.setPercentHeight(100/2.0);
一半。设定值(VPos。中心);
grid.getRowConstraints().addAll(一半,一半);
StackPane布局=新建StackPane();
layout.setStyle(“-fx背景色:白色;”);
layout.getChildren().addAll(网格);
舞台场景(新场景(布局图,600400));
stage.show();
}
公共静态void main(字符串[]args)
{
发射();
}
}

当拖动事件发生在
网格窗格
单元格上时,是否要突出显示某个单元格?我要单击鼠标,然后在释放它时,选定的单元格会显示一些颜色您将如何显示一些颜色?颜色选择器会出现吗?