您的位置:首页 > 编程语言 > Java开发

java语言程序设计 第十五章 (15.1、15.2、15.3、15.4、15.5、15.6、15.7)

2018-01-30 16:59 344 查看
程序小白,希望和大家多交流,共同学习







15.1

//调用CardsPane点击按钮后随机出现三张扑克牌
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Button;
import javafx.geometry.Pos;
import javafx.geometry.Insets;

public class GetCards extends Application
{
@Override
public void start(Stage primaryStage)
{
VBox pane = new VBox(5);
pane.setPadding(new Insets(5, 5, 5, 5));
CardsPane cards = new CardsPane();
pane.getChildren().add(cards);

Button btRefresh = new Button("Refresh");
pane.getChildren().add(btRefresh);
pane.setAlignment(Pos.CENTER);
VBox.setMargin(btRefresh, new Insets(5, 5, 5, 5));

btRefresh.setOnAction(e -> {
cards.refresh();});

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


//cards面板,用于随机选取三张扑克牌显示在一个HBox 的面板中
import javafx.scene.layout.HBox;
import javafx.scene.image.ImageView;
import java.util.Arrays;
import java.util.Collections;
import java.util.ArrayList;

public class CardsPane extends HBox
{
private Integer[] cardsNum = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54};
private ArrayList<Integer> list = new ArrayList<>(Arrays.asList(cardsNum));
private ImageView p1;
private ImageView p2;
private ImageView p3;
private ImageView p4;
public CardsPane()
{
setSpacing(5);
Collections.shuffle(list);
p1 = new ImageView("image/card/" + Integer.valueOf(list.get(0)) + ".png");
p2 = new ImageView("image/card/" + Integer.valueOf(list.get(1)) + ".png");
p3 = new ImageView("image/card/" + Integer.valueOf(list.get(2)) + ".png");
p4 = new ImageView("image/card/" + Integer.valueOf(list.get(3)) + ".png");
super.getChildren().addAll(p1, p2, p3, p4);
}

public void refresh()
{
Collections.shuffle(list);
super.getChildren().removeAll(p1, p2, p3, p4);
p1 = new ImageView("image/card/" + Integer.valueOf(list.get(0)) + ".png");
p2 = new ImageView("image/card/" + Integer.valueOf(list.get(1)) + ".png");
p3 = new ImageView("image/card/" + Integer.valueOf(list.get(2)) + ".png");
p4 = new ImageView("image/card/" + Integer.valueOf(list.get(3)) + ".png");
super.getChildren().addAll(p1, p2, p3, p4);
}
}


15.2

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.control.Button;
import javafx.geometry.Insets;
import javafx.geometry.Pos;

public class RotateARectagle extends Application
{
private double angle = 0;
@Override
public void start(Stage primaryStage)
{
VBox pane = new VBox(10);
pane.setPadding(new Insets(20, 20, 20, 20));
Rectangle re = new Rectangle(50, 50, 20, 40);
re.setFill(Color.WHITE);
re.setStroke(Color.BLACK);
Button btRotate = new Button("Rotate");
pane.getChildren().addAll(re, btRotate);
pane.setAlignment(Pos.CENTER);

btRotate.setOnAction(e -> {
changeRectagle(re);
});

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

public void changeRectagle(Rectangle re)
{
angle += 15;
re.setRotate(angle);
}
}


15.3

//单击四个按钮改变小球的位置
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.HBox;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;
import javafx.geometry.Pos;

public class MoveBall extends Application
{
@Override
public void start(Stage primaryStage)
{
Pane pane = new Pane();
Circle circle = new Circle(10, 10, 10);
circle.setFill(Color.WHITE);
circle.setStroke(Color.BLACK);

pane.getChildren().add(circle);

Button up = new Button("Up");
Button right = new Button("Right");
Button down = new Button("Down");
Button left = new Button("Left");
HBox hbox = new HBox(5);
hbox.setAlignment(Pos.CENTER);
hbox.getChildren().addAll(up, right, down, left);
pane.getChildren().add(hbox);

up.setOnAction(e -> {
if (circle.getCenterY() - 10 - 5 < 0)
{
circle.setCenterY(circle.getCenterY());
}
else
circle.setCenterY(circle.getCenterY() - 5);
circle.setCenterX(circle.getCenterX());
});

down.setOnAction(e -> {
if (circle.getCenterY() + 10 + 5 > pane.getHeight())
{
circle.setCenterY(circle.getCenterY());
}
else
circle.setCenterY(circle.getCenterY() + 5);
circle.setCenterX(circle.getCenterX());
});
left.setOnAction(e -> {
if (circle.getCenterX() - 10 - 5 < 0)
{
circle.setCenterX(circle.getCenterX());
}
else
circle.setCenterX(circle.getCenterX() - 5);
circle.setCenterY(circle.getCenterY());
});
right.setOnAction(e -> {
if (circle.getCenterX() + 10 + 5 > pane.getWidth())
{
circle.setCenterX(circle.getCenterX());
}
else
circle.setCenterX(circle.getCenterX() + 5);
circle.setCenterY(circle.getCenterY());
});

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


15.4

//使用按钮完成简单的加减乘除
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
import javafx.geometry.Insets;
import javafx.geometry.Pos;

public class SimpleCalculate extends Application
{
@Override
public void start(Stage primaryStage)
{
VBox pane = new VBox(10);
pane.setAlignment(Pos.CENTER);
pane.setPadding(new Insets(20, 20, 20, 20));
HBox hbox1 = new HBox(10);
Label lbN1 = new Label("Number1: ");
Label lbN2 = new Label("Number2: ");
Label lbR = new Label("Result: ");
TextField tf1 = new TextField();
tf1.setPrefColumnCount(3);
TextField tf2 = new TextField();
tf2.setPrefColumnCount(3);
TextField tfR = new TextField();
tfR.setPrefColumnCount(3);
tfR.setEditable(false);
hbox1.getChildren().addAll(lbN1, tf1, lbN2, tf2, lbR, tfR);
pane.getChildren().add(hbox1);

Button btAdd = new Button("Add");
Button btSubtract = new Button("Subtract");
Button btMultiply = new Button("Multiply");
Button btDivide = new Button("Divide");
HBox hbox2 = new HBox(10);
hbox2.getChildren().addAll(btAdd, btSubtract, btMultiply, btDivide);
pane.getChildren().add(hbox2);

btAdd.setOnAction(e -> {
double result = Double.parseDouble(tf1.getText()) + Double.parseDouble(tf2.getText());
tfR.setText(result + "");
});
btSubtract.setOnAction(e -> {
double result = Double.parseDouble(tf1.getText()) - Double.parseDouble(tf2.getText());
tfR.setText(result + "");
});
btMultiply.setOnAction(e -> {
double result = Double.parseDouble(tf1.getText()) * Double.parseDouble(tf2.getText());
tfR.setText(result + "");
});
btDivide.setOnAction(e -> {
if (Double.parseDouble(tf2.getText()) != 0)
{
double result = Double.parseDouble(tf1.getText()) / Double.parseDouble(tf2.getText());
tfR.setText(result + "");
}
else
tfR.setText("Wrong");
});

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


15.5

//投资值计算器
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.HPos;

public class InvestmentCalculate extends Application
{
@Override
public void start(Stage primaryStage)
{
GridPane pane = new GridPane();
pane.setPadding(new Insets(20, 20, 20, 20));
pane.setHgap(5);
pane.setVgap(5);

TextField tfInvestmentAmount = new TextField();
TextField tfNumberOfYears = new TextField();
TextField tfAnnualInterestRate = new TextField();
TextField tfFutureValue = new TextField();
Button btCalculate = new Button("Calculate");

tfInvestmentAmount.setAlignment(Pos.BOTTOM_RIGHT);
tfNumberOfYears.setAlignment(Pos.BOTTOM_RIGHT);
tfAnnualInterestRate.setAlignment(Pos.BOTTOM_RIGHT);
tfFutureValue.setAlignment(Pos.BOTTOM_RIGHT);
tfFutureValue.setEditable(false);
GridPane.setHalignment(btCalculate, HPos.RIGHT);

pane.add(new Label("Investment Amounnt: "), 0 ,0);
pane.add(tfInvestmentAmount, 1, 0);
pane.add(new Label("Number Of Years: "), 0, 1);
pane.add(tfNumberOfYears, 1, 1);
pane.add(new Label("Annual Iterest Rate: "), 0, 2);
pane.add(tfAnnualInterestRate, 1, 2);
pane.add(new Label("Future Value: "), 0, 3);
pane.add(tfFutureValue, 1, 3);
pane.add(btCalculate, 1, 4);

btCalculate.setOnAction(e -> {
double futureValue = Double.parseDouble(tfInvestmentAmount.getText()) *
Math.pow((1 + Double.parseDouble(tfAnnualInterestRate.getText()) / 1200),
(Integer.parseInt(tfNumberOfYears.getText()) * 12));
tfFutureValue.setText(String.format("$%.2f", futureValue));
});

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


15.6

//单击鼠标交替显示两个信息

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;

public class ShowMessage extends Application
{
private boolean fun = true;
@Override
public void start(Stage primaryStage)
{
StackPane pane = new StackPane();

pane.setOnMouseClicked(e -> {
print();
});

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

public void print()
{
if (fun)
{
System.out.println("Java is fun");
fun = false;
}
else
{
System.out.println("Java is powerful");
fun = true;
}
}
}


15.7

//鼠标按下和松开小球显示不同的颜色
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;

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

pane.setOnMousePressed(e -> {
circle.setFill(Color.BLACK);
});

pane.setOnMouseReleased(e -> {
circle.setFill(Color.WHITE);
});

Scene scene = new Scene(pane, 200, 200);
primaryStage.setTitle("Change Color");
primaryStage.setScene(scene);
primaryStage.show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: