Java语言程序设计【5】

ControlCircle

注册处理器和处理事件

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class ControlCircle extends Application {
  private CirclePane circlePane = new CirclePane();

  @Override // Override the start method in the Application class
  public void start(Stage primaryStage) {
    // Hold two buttons in an HBox
    HBox hBox = new HBox();
    hBox.setSpacing(10);
    hBox.setAlignment(Pos.CENTER);
    Button btEnlarge = new Button("Enlarge");
    Button btShrink = new Button("Shrink");
    hBox.getChildren().add(btEnlarge);
    hBox.getChildren().add(btShrink);
    
    // Create and register the handler
    btEnlarge.setOnAction(new EnlargeHandler());
    btShrink.setOnAction(new ShrinkHandler());

    BorderPane borderPane = new BorderPane();
    borderPane.setCenter(circlePane);
    borderPane.setBottom(hBox);
    BorderPane.setAlignment(hBox, Pos.CENTER);
    
    // Create a scene and place it in the stage
    Scene scene = new Scene(borderPane, 200, 150);
    primaryStage.setTitle("ControlCircle"); // Set the stage title
    primaryStage.setScene(scene); // Place the scene in the stage
    primaryStage.show(); // Display the stage
  }
  
  class EnlargeHandler implements EventHandler<ActionEvent> {
    @Override // Override the handle method
    public void handle(ActionEvent e) {
      circlePane.enlarge();
    }
  }

class ShrinkHandler implements EventHandler<ActionEvent> {
  @Override // Override the handle method
  public void handle(ActionEvent e) {
    circlePane.shrink();
  }
}
}
class CirclePane extends StackPane {
  private Circle circle = new Circle(50); 
  
  public CirclePane() {
    getChildren().add(circle);
    circle.setStroke(Color.BLACK);
    circle.setFill(Color.WHITE);
  }
  
  public void enlarge() {
    circle.setRadius(circle.getRadius() + 2);
  }
  
  public void shrink() {
    circle.setRadius(circle.getRadius() > 2 ? 
      circle.getRadius() - 2 : circle.getRadius());
  }
}

15.4 创建简单的计算器

编写程序完成加法、减法、乘法和除法操作

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.Scanner;

public class Text extends Application {

    private TextField text1 = new TextField();
    private TextField text2 = new TextField();
    private TextField text3 = new TextField();
    private Button btAdd = new Button("Add");
    private Button btSub = new Button("Subtract");
    private Button btMult = new Button("Multiply");
    private  Button btDiv = new Button("Divide");

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        GridPane gridPane = new GridPane();

       // text1.setOnAction(e->getTextClass());
        // text2.setOnAction(new setHandler());

        gridPane.add(new Label("Number1:"),0,0);
        gridPane.add(text1,1,0);
        gridPane.add(new Label("Number2:"),2,0);
        gridPane.add(text2,3,0);
        gridPane.add(new Label("Result:"),4,0);
        gridPane.add(text3,5,0);
        gridPane.add(btAdd,0,1);
        gridPane.add(btSub,1,1);
        gridPane.add(btMult,2,1);
        gridPane.add(btDiv,3,1);

        btAdd.setOnAction(e->Add());
        btSub.setOnAction(event -> Subtract());
        btMult.setOnAction(event -> Multiply());
        btDiv.setOnAction(event -> Divide());

        Scene scene = new Scene(gridPane,200,50);
        primaryStage.setTitle("Exercise15_04");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    private void  Add(){
        double res = Double.parseDouble(text1.getText()) + Double.parseDouble(text2.getText());
        text3.setText(String.format("%.2f",res));
    }
    private void  Subtract(){
        double res = Double.parseDouble(text1.getText()) - Double.parseDouble(text2.getText());
        text3.setText(String.format("%.2f",res));
    }
    private void  Multiply(){
        double res = Double.parseDouble(text1.getText()) * Double.parseDouble(text2.getText());
        text3.setText(String.format("%.2f",res));
    }
    private void  Divide(){
        double res = Double.parseDouble(text1.getText()) / Double.parseDouble(text2.getText());
        text3.setText(String.format("%.2f",res));
    }

    //内部类
   /** class setHandler implements EventHandler<ActionEvent> {
        @Override // Override the handle method
        public void handle(ActionEvent e) {
            text2.setText(text1.getText());
        }
    }
    //控制台输出
    private void getTextClass() {
       String insert = text1.getText();
        System.out.println(insert);
    }*/
}

运行结果:在这里插入图片描述

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import java.util.Scanner;

public class Text extends Application {

    private TextField text1 = new TextField();
    private TextField text2 = new TextField();
    private TextField text3 = new TextField();
    private Button btAdd = new Button("Add");
    private Button btSub = new Button("Subtract");
    private Button btMult = new Button("Multiply");
    private  Button btDiv = new Button("Divide");

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        FlowPane flowPane = new FlowPane();
        flowPane.setAlignment(Pos.CENTER);

        flowPane.getChildren().addAll(new Label("Number1:"),text1,new Label("Number2:"),text2,new Label("Result:"),text3);
        flowPane.getChildren().addAll(btAdd,btDiv,btMult,btSub);


        btAdd.setOnAction(e->{double res = Double.parseDouble(text1.getText()) + Double.parseDouble(text2.getText());
            text3.setText(String.format("%.2f",res));});
        btSub.setOnAction(event -> { double res = Double.parseDouble(text1.getText()) - Double.parseDouble(text2.getText());
            text3.setText(String.format("%.2f",res));});
        btMult.setOnAction(event -> { double res = Double.parseDouble(text1.getText()) * Double.parseDouble(text2.getText());
            text3.setText(String.format("%.2f",res));});
        btDiv.setOnAction(event -> {double res = Double.parseDouble(text1.getText()) / Double.parseDouble(text2.getText());
            text3.setText(String.format("%.2f",res));});

        Scene scene = new Scene(flowPane,200,50);
        primaryStage.setTitle("Exercise15_04");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

运行结果:在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ca1m4n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值