【发布时间】:2019-12-23 01:40:15
【问题描述】:
我不明白为什么我的 HBox 周围没有边框?现在什么都没有发生,除了我猜的 this.setCenter(hbox) 部分,eclipse 抛出了 IllegalArgumentException 。 (忽略这个,我只是写,因为 StackOverflow 不允许我上传这么多的代码)
package view;
import javafx.scene.paint.Color;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
public class MyPane extends BorderPane{
private int score=0;
public MyPane() {
this.score=0;
init();
// TODO Auto-generated constructor stub
}
public MyPane(int score) {
this.score=score;
init();
}
public void init() {
Image img=new Image("Ball.png");
ImageView imv= new ImageView(img);
imv.setFitHeight(100);
imv.setFitWidth(100);
Label label= new Label(Integer.toString(score));
label.setPrefSize(100, 100);
label.setFont(new Font(50));
label.setPadding(new Insets(18));
HBox hbox= new HBox();
hbox.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.SOLID, null , null)));
hbox.getChildren().add(imv);
hbox.getChildren().add(label);
hbox.setSpacing(50);
hbox.setPadding(new Insets(20));
this.getChildren().add(hbox);
this.setCenter(hbox);
}
}
【问题讨论】:
-
minimal reproducible example 在这里会有所帮助。边框对我来说似乎很好。
-
话虽如此,使用 CSS 添加边框可能要容易得多:
hbox.setStyle("-fx-border-color: green"); -
` public class MyPane extends BorderPane{ public void init() { Label label= new Label(Integer.toString(score));标签.setPrefSize(100, 100); label.setFont(新字体(50)); label.setPadding(新插图(18)); HBox hbox= 新 HBox(); hbox.setBorder(new Border(new BorderStroke(Color.GREEN, BorderStrokeStyle.SOLID, null, null))); hbox.getChildren().add(标签); hbox.setSpacing(50); hbox.setPadding(新插图(20)); this.getChildren().add(hbox); } }`