这是通过从谷歌拍摄两张图片来制作棋盘的代码,但是当我运行它时,它告诉我多个异常。我不知道自己做错了什么,因为没有语法错误,有逻辑错误。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class CheckBoard extends Application{
public void start(Stage primaryStage) {
ImageView imag = new ImageView("https://c1.staticflickr.com/5/
4034/4544827697_6f73866999_b.jpg");
ImageView imag1 = new ImageView("https://upload.
wikimedia.org/wikipedia/commons/thumb/2/25/Red.svg/2000px-Red.svg.png");
GridPane pane = new GridPane();
imag1.setFitHeight(50);
imag1.setFitWidth(50);
imag.setFitHeight(50);
imag.setFitWidth(50);
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(j%2==0) pane.add(imag, i, j);
else pane.add(imag1, i, j);
}
}
Scene scene= new Scene(pane,600,600);
primaryStage.setScene(scene);
primaryStage.show();
}
}
答案 0 :(得分:0)
您将收到以下
之类的例外情况...
Caused by: java.lang.IllegalArgumentException: Children: duplicate children added: parent = Grid hgap=0.0, vgap=0.0, alignment=TOP_LEFT
at javafx.scene.Parent$2.onProposedChange(Unknown Source)
...
因为您无法将Node
(您的ImageView
)添加到多个父级。您需要加载图像,然后为每个单元格创建单独的ImageViews
:
...
public void start(Stage primaryStage) {
Image image = new Image("https://c1.staticflickr.com/5/4034/4544827697_6f73866999_b.jpg");
Image image1 = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Red.svg/2000px-Red.svg.png");
GridPane pane = new GridPane();
for(int i=0; i<8; i++) {
for(int j=0; j<8; j++){
ImageView view;
if(j % 2 == 0) {
view = new ImageView(image);
}
else {
view = new ImageView(image1);
}
view.setFitHeight(50);
view.setFitWidth(50);
pane.add(view, i, j);
}
}
}
...
在旁注中,您使用的图像似乎只能读取和黑色方块 - 我假设您想在实际应用中使用不同的图像,但如果您真的想使用彩色矩形,则可能更好用Rectangle
代替Image
。