五子棋
    jdk1.8 11以上需要单独下载javafx的jar包
    1.工具类继承Application 重写start(Stage primaryStage) 形参就是当前舞台对象
    画板 //画板内部有个集合Children 集合存放所有控件
    Pane pane = new Pane();
    Line line = new Line(10,20,580,40); //画一根线 起点(10,20)终点(580,40)
    pane.getChildren().add(line);//将线条对象加入画板的节点集合
    Background background = new Background(new BackgroundFill(Color.BEIGE, null, null));
    pane.setBackground(background);//设置好的背景加入画板
    场景(画板放入场景)
    Scene scene = new Scene(pane,600,700);//把控件通过画板放入场景 设置场景宽高
    舞台(场景加入舞台)
    primaryStage.setScene(scene);//把场景放入舞台 展示
    展示舞台
    primaryStage.show();
    2.测试类启动应用程序
    测试类继承工具类
    调用launch(main方法的参数)
    public class Test extends Util {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    //启动应用程序
    launch(args);
    }
    }

    1. 3.其他控件
    2. 按钮:新局 悔棋 保存棋谱 打谱 退出 600 560
    3. Button button_1 = new Button("新局");//创建按钮对象
    4. button_1.setPrefSize(80, 40);//设定按钮大小
    5. button_1.setLayoutX(20);//设置距离左侧20
    6. button_1.setLayoutY(610);//设置距离顶部多远
    7. pane.getChildren().add(button_1);
    8. 按钮点击事件:
    9. button_4.setOnAction(new EventHandler<ActionEvent>() {
    10. @Override
    11. public void handle(ActionEvent event) {
    12. }
    13. }
    14. 新局:
    15. //清空原集合
    16. ac.clear();
    17. //清空棋盘
    18. pane.getChildren().removeIf((Node t)->{return t instanceof Circle;});
    19. 4.落子
    20. 画板点击事件
    21. pane.setOnMouseClicked(new EventHandler<MouseEvent>() {
    22. @Override
    23. public void handle(MouseEvent event) {
    24. // TODO Auto-generated method stub
    25. double x = event.getSceneX();
    26. double y = event.getSceneY();
    27. //画棋子
    28. Circle circle = new Circle(x,y,20,lz?Color.BLACK:Color.WHITE);
    29. lz=lz?false:true;//切换落子颜色
    30. //将棋子加入画板
    31. pane.getChildren().add(circle);
    32. }
    33. });
    34. 1.不能超出600的高 此位置提示不能落子
    35. 2.落子应该找到最近的焦点坐标落子
    36. 3.如果最近的焦点坐标已经有子 则提示不能重复落子
    37. 4.判定是否赢棋
    38. 警告效果1. 只有确定 没有返回值
    39. Alert alert = new Alert(AlertType.WARNING);
    40. alert.setTitle("落子警告");
    41. alert.setHeaderText("落子异常");
    42. alert.setContentText("棋盘以外不能落子");
    43. alert.show();
    44. 警告效果2. 有确定 取消两个选项
    45. Alert alert = new Alert(AlertType.CONFIRMATION);
    46. alert.setTitle("新局警告");
    47. alert.setHeaderText("是否清空棋盘?");
    48. alert.setContentText("若未保存,则丢失当前棋局。");
    49. Optional<ButtonType> wait = alert.showAndWait();
    50. if(wait.get() == ButtonType.OK) {}
    51. 提示框效果3. 内含下拉列表展示所有可选项 选择后返回选择的内容
    52. //带下拉列表的提示框
    53. ChoiceDialog<String> dialog = new ChoiceDialog<String>(as.get(0), as);
    54. dialog.setTitle("打谱确认");
    55. dialog.setHeaderText("请选择普表");
    56. dialog.setContentText("你选择的普表:");
    57. Optional<String> wait2 = dialog.showAndWait();
    58. String fileName = wait2.get();

    单机五子棋.zip