【发布时间】:2021-11-19 04:08:29
【问题描述】:
所以我试图在 Java 中显示一个棋盘。到目前为止,我可以正确地绘制一堆矩形并为其着色,并正确调整窗口和矩形的大小。但是,现在我想在这些矩形上添加一个棋子的图像,我不知道如何继续。
我为棋子创建了一个 png 的图像视图,但是当我尝试将它添加到网格窗格中时,就像我做矩形一样,它给了我一个重复的子错误。
这是目前有效的代码
package test3;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.TilePane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.scene.*;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.image.*;
/**
*
*/
public class Test3 extends Application {
GridPane root = new GridPane();
final int size = 8;
ImageView pawn = new ImageView("file:pawn.png");
@Override
public void start(Stage primaryStage) throws Exception {
for (int row = 0; row < size; row++) {
for (int col = 0; col < size; col++) {
Rectangle square = new Rectangle();
Color color;
if ((row + col) % 2 == 0) {
color = Color.CHOCOLATE;
}
else {
color = Color.ANTIQUEWHITE;
}
square.setFill(color);
root.add(square, col, row);
square.widthProperty().bind(root.widthProperty().divide(size));
square.heightProperty().bind(root.heightProperty().divide(size));
}
}
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
创建棋子的图像视图并将其绘制在矩形顶部的最佳方法是什么,例如棋子在棋盘上的样子?我已经有一个文件,比如 pawn.png,我可以制作它的图像视图,但是每当我尝试将图像视图添加到我绘制矩形的网格窗格中时,它都会出错。我不知道该怎么办。我尝试使用第二个网格窗格,我只添加图像,但这也会产生重复的子错误。
【问题讨论】:
-
使用
Panes(或一些合适的子类)代替矩形,并向它们添加图像视图。 -
那么我将如何获得背景矩形?
-
使用
Panes 代替矩形。 -
嗯,我明白了。但是,似乎尝试设置窗格的颜色有点复杂,我在网上找到的示例似乎无法正常工作,执行诸如 pane.setbackground(new backgroundfill()) 之类的操作,但 IDE 只是抛出错误那
-
那甚至无法编译。只需阅读 Java 文档。您也可以使用
setStyle(…),或者设置样式类或伪类并使用外部 CSS 文件(这可能是首选方法)。
标签: java image user-interface javafx chess