Java语言程序设计 第十五章 (15.8、15.9、15.10、15.11、15.12、15.13、15.14)

程序小白,希望和大家多交流,共同学习
这里写图片描述
这里写图片描述
这里写图片描述
15.8

//显示鼠标的位置
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.input.MouseEvent;
import javafx.scene.text.Text;

public class ShowMouseCoordinate extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        Pane pane = new Pane();

        Text coordinate = new Text();
        pane.setOnMousePressed(e -> {
            double x = e.getX();
            double y = e.getY();
            coordinate.setX(x);
            coordinate.setY(y);
            coordinate.setText("(" + x + "," + y + ")");
            pane.getChildren().add(coordinate);
        });

        pane.setOnMouseReleased(e -> {
            pane.getChildren().remove(coordinate);
        });

        Scene scene = new Scene(pane);
        primaryStage.setTitle("ShowMouseCoordinate");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

15.9

//画线的位置坐标一个变,可以定义几个全局变量表示,但还是写成一个对象清晰明了
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Line;
import javafx.scene.input.KeyCode;

public class DrawLine extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        //LinePane 本身就是一个面板,不需要加入新的面板。
        LinePane line = new LinePane();

        line.setOnKeyPressed(e -> {
            switch (e.getCode())
            {
            case UP:
                line.up(); break;
            case DOWN:
                line.down(); break;
            case LEFT:
                line.left(); break;
            case RIGHT:
                line.right(); break;
            }
        });

        Scene scene = new Scene(line, 500, 500);
        primaryStage.setTitle("DrawLine");
        primaryStage.setScene(scene);
        primaryStage.show();
        //这句不能忘啊
        line.requestFocus();
    }
}
//要求是们每次的线条都要记录,所以每次更新的线条的坐标后,
//就要画一条新的线
import javafx.scene.shape.Line;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;

public class LinePane extends Pane
{
    private double startX;
    private double startY;
    private double endX;
    private double endY;

    public LinePane()
    {
        startX = endX = 40;
        startY = endY = 40;
        drawLine();
    }

    public void drawLine()
    {
        Line line = new Line();
        line.setStartX(startX);
        line.setStartY(startY);
        line.setEndX(endX);
        line.setEndY(endY);
        super.getChildren().add(line);
        line.setStroke(Color.RED);
    }

    public void up()
    {
        endY -= 5;
        drawLine();
        startY = endY;
    }

    public void down()
    {
        endY += 5;
        drawLine();
        startY = endY;
    }

    public void left()
    {
        endX -= 5;
        drawLine();
        startX = endX;
    }

    public void right()
    {
        endX += 5;
        drawLine();
        startX = endX;
    }
}

15.10

//将输入内容显示在面板中
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.geometry.Insets;
import javafx.scene.input.KeyCode;
import java.util.Scanner;

public class PrintWords extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        VBox pane = new VBox(5);
        String content = "";
        pane.setOnKeyPressed(e -> {
            Label text = new Label(enterWords());
            pane.getChildren().add(text);
        });

        Scene scene = new Scene(pane, 200, 200);
        primaryStage.setTitle("PrintWords");
        primaryStage.setScene(scene);
        primaryStage.show();
        pane.requestFocus();
    }

    public String enterWords()
    {
        Scanner input = new Scanner(System.in);
        String content = input.nextLine();
        return content;
    }
}

15.11
在Java语言程序设计 (样例代码) 的第7个
15.12

//确定一个圆和鼠标位置的关系
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.geometry.Point2D;

public class PointAndACircle extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        Pane pane = new Pane();
        Circle circle = new Circle(100, 60, 50);
        pane.getChildren().add(circle);
        circle.setFill(Color.WHITE);
        circle.setStroke(Color.BLACK);

        Text text = new Text();
        pane.getChildren().add(text);

        pane.setOnMouseMoved(e -> {
            pane.getChildren().remove(text);
            double x = e.getSceneX();
            double y = e.getSceneY();
            text.setX(x);
            text.setY(y);
            if (circle.contains(new Point2D(x, y)))
            {
                text.setText("Mouse point is inside the circle");
                text.setStroke(Color.BLUE);
            }
            else
            {
                text.setText("Mouse point is outside the circle");
                text.setStroke(Color.RED);
            }
            pane.getChildren().add(text);
        });

        Scene scene = new Scene(pane, 200, 150);
        primaryStage.setTitle("PointAndACircle");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

15.13

//判断一个矩形和鼠标的位置关系
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.geometry.Point2D;

public class PointAndARectangle extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        Pane pane = new Pane();

        Rectangle re = new Rectangle(100, 60, 100, 40);
        re.setFill(Color.WHITE);
        re.setStroke(Color.BLACK);
        pane.getChildren().add(re);

        Text text = new Text();
        pane.getChildren().add(text);

        pane.setOnMouseMoved(e -> {
            pane.getChildren().remove(text);
            double x = e.getSceneX();
            double y = e.getSceneY();
            text.setX(x);
            text.setY(y);
            if (re.contains(new Point2D(x, y)))
            {
                text.setText("Mouse point is inside the circle");
                text.setStroke(Color.BLUE);
            }
            else
            {
                text.setText("Mouse point is outside the circle");
                text.setStroke(Color.RED);
            }
            pane.getChildren().add(text);
        });

        Scene scene = new Scene(pane, 300, 200);
        primaryStage.setTitle("PointAndARectangle");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

15.14

//判断点和多边形的位置关系
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Polygon;
import javafx.collections.ObservableList;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.geometry.Point2D;

public class PointAndPolygon extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        Pane pane = new Pane();
        Polygon polygon = new Polygon();
        ObservableList<Double> list = polygon.getPoints();
        list.add(40.0);
        list.add(20.0);
        list.add(70.0);
        list.add(40.0);
        list.add(60.0);
        list.add(80.0);
        list.add(45.0);
        list.add(45.0);
        list.add(20.0);
        list.add(60.0);

        polygon.setFill(Color.WHITE);
        polygon.setStroke(Color.BLACK);
        pane.getChildren().add(polygon);

        Text text = new Text();
        pane.getChildren().add(text);

        pane.setOnMouseMoved(e -> {
            pane.getChildren().remove(text);
            double x = e.getSceneX();
            double y = e.getSceneY();
            text.setX(x);
            text.setY(y);
            if (polygon.contains(new Point2D(x, y)))
            {
                text.setText("Mouse point is inside the polygon");
                text.setStroke(Color.BLUE);
            }
            else
            {
                text.setText("Mouse point is outside the circle");
                text.setStroke(Color.RED);
            }
            pane.getChildren().add(text);
        });

        Scene scene = new Scene(pane, 300, 100);
        primaryStage.setTitle("PointAndPolygon");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值