【发布时间】:2016-03-14 07:33:17
【问题描述】:
我正在开发 javafx Minesweeper 游戏,目前只使用鼠标左键输入。我也想使用鼠标右键,以便用户可以标记可能的炸弹。我查看了 Button 类的 Oracle 网页,上面写着:
"当一个按钮被按下和释放时,会发送一个ActionEvent。你的应用程序可以通过实现一个EventHandler来处理ActionEvent来执行一些基于这个事件的动作。按钮也可以通过实现一个EventHandler来处理鼠标事件来响应鼠标事件。”
https://docs.oracle.com/javafx/2/api/javafx/scene/control/Button.html
我尝试了几种不同的方法,但都没有成功。
包括我当前的 EventHandler 代码。如果有人可以解释处理鼠标右键/左键单击的最佳方法,或者指出我在哪里可以找到该信息的正确方向,我们将不胜感激。
MineButton 是一个扩展 Button 的自定义类。我想右键单击以标记为“m”并更改单元格颜色,左键单击将保持不变。
for (int row = 0; row < 8; row++){
for (int col = 0; col <8; col++){
MineButton button = new MineButton(row, col);
button.setPrefSize(100, 100);
button.setText("?");
button.setStyle("-fx-font: 22 arial; -fx-base:#dcdcdc;");
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if ( button.isAMine() == true){
button.setText("B");
for( int row1 = 0; row1 < 8; row1++){
for ( int col1 = 0; col1 < 8; col1++){
if (mineButtons[row1][col1].isAMine() == true){
mineButtons[row1][col1].setText("B");
mineButtons[row1][col1].setStyle("-fx- font: 22 arial; -fx-base: #dc143c;");
}
}
}
}
else{
recursion(mineButtons, button.getX(), button.getY());
}
}
});
【问题讨论】:
标签: javafx mouseevent eventhandler minesweeper