编写一个javafx程序让用户在6行7列的网格的文本域中输入数字,如果存在四个相同的数字序列就高亮显示他们
时间: 2024-03-17 19:46:17 浏览: 25
好的,以下是一个简单的JavaFX程序,可以让用户在6行7列的网格的文本域中输入数字,并高亮显示任何存在的四个相同的数字序列:
```java
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class HighlightFourNumbers extends Application {
@Override
public void start(Stage primaryStage) {
GridPane gridPane = new GridPane();
gridPane.setAlignment(Pos.CENTER);
gridPane.setPadding(new Insets(10));
gridPane.setHgap(10);
gridPane.setVgap(10);
// 创建文本域并添加到网格中
TextField[][] textFields = new TextField[6][7];
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
textFields[i][j] = new TextField();
textFields[i][j].setFont(Font.font("Arial", FontWeight.BOLD, 16));
textFields[i][j].setPrefSize(50, 50);
gridPane.add(textFields[i][j], j, i);
}
}
// 检查是否存在四个相同的数字序列,并将其高亮显示
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 4; j++) {
String num1 = textFields[i][j].getText();
String num2 = textFields[i][j + 1].getText();
String num3 = textFields[i][j + 2].getText();
String num4 = textFields[i][j + 3].getText();
if (num1.equals(num2) && num2.equals(num3) && num3.equals(num4)) {
highlight(textFields[i][j], textFields[i][j + 1], textFields[i][j + 2], textFields[i][j + 3]);
}
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 7; j++) {
String num1 = textFields[i][j].getText();
String num2 = textFields[i + 1][j].getText();
String num3 = textFields[i + 2][j].getText();
String num4 = textFields[i + 3][j].getText();
if (num1.equals(num2) && num2.equals(num3) && num3.equals(num4)) {
highlight(textFields[i][j], textFields[i + 1][j], textFields[i + 2][j], textFields[i + 3][j]);
}
}
}
Scene scene = new Scene(gridPane, 400, 400);
primaryStage.setScene(scene);
primaryStage.setTitle("Highlight Four Numbers");
primaryStage.show();
}
// 将四个文本域高亮显示
private void highlight(TextField textField1, TextField textField2, TextField textField3, TextField textField4) {
textField1.setStyle("-fx-background-color: yellow;");
textField2.setStyle("-fx-background-color: yellow;");
textField3.setStyle("-fx-background-color: yellow;");
textField4.setStyle("-fx-background-color: yellow;");
textField1.setTextFill(Color.RED);
textField2.setTextFill(Color.RED);
textField3.setTextFill(Color.RED);
textField4.setTextFill(Color.RED);
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个程序中,我们创建一个6行7列的网格,并向其中添加了TextField文本域。然后,我们遍历每一行和每一列,检查是否存在四个相同的数字序列,如果存在则将其高亮显示。为了实现高亮显示,我们使用了CSS样式来设置文本域的背景颜色和文本颜色。
希望这个程序对您有所帮助!