在Java FX中开发应用程序。在这个特定的窗口中,我使用了BorderPane。当按下按钮时,下面提供的代码应该显示在BorderPane的Center区域中。
private VBox tutor() {
VBox vb1 = new VBox();
vb1.setPadding(new Insets (80, 50, 50, 160));
vb1.setSpacing(30);
VBox vb2 = new VBox();
vb2.setPadding(new Insets (30, 30, 30, 30));
vb2.setSpacing(10);
Label lb1 = new Label("New Tutor...? Sign Up here by providing the\n"
+ "necessary details in the next page. Press the 'Sign Up'\n"
+ "button to proceed.");
lb1.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
lb1.setTextFill(Color.BLACK);
Button btnacnt = new Button("Sign Up");
btnacnt.setFont(Font.font("Calibri", FontWeight.THIN, 18));
btnacnt.setStyle(" -fx-base: #333333;");
btnacnt.setTextFill(Color.WHITE);
vb2.getChildren().addAll(lb1, btnacnt);
VBox vb3 = new VBox();
vb3.setPadding(new Insets (30, 30, 30, 30));
vb3.setSpacing(10);
Label lb2 = new Label("Existing Tutor...? Sign In here by providing the\n"
+ "username and password in the next page. Press the 'Sign In'\n"
+ "button to proceed.");
lb2.setFont(Font.font("Calibri", FontWeight.BOLD, 17));
lb2.setTextFill(Color.BLACK);
Button btnsignin = new Button("Sign In");
btnsignin.setFont(Font.font("Calibri", FontWeight.THIN, 18));
btnsignin.setStyle(" -fx-base: #333333;");
btnsignin.setTextFill(Color.WHITE);
btnsignin.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
setCenter(tutorSignin());
}
});
vb3.getChildren().addAll(lb2, btnsignin);
vb1.getChildren().addAll(vb2, vb3);
return vb1;
}
代码正在运行。按下按钮时,代码中的详细信息将显示在中心区域。但问题是标签内容都没有完全显示。我将提供一个屏幕截图。
那么为什么Label的内容没有完全显示?如何让它完全可见?
答案 0 :(得分:2)
这是因为没有足够的空间来显示所有文本,VBox会将其子项调整为首选大小,标签只是隐藏其溢出的文本。要查看已使用的布局边框(应用其填充),请尝试:
vb1.setStyle("-fx-border-color:red");
vb2.setStyle("-fx-border-color:green");
vb3.setStyle("-fx-border-color:blue");
lb1.setStyle("-fx-border-color:yellow");
lb2.setStyle("-fx-border-color:aqua");
依旧......
作为解决方案:
1)放大窗口大小或减少填充/插入
2)强制标签通过给出最小高度lb1.setMinHeight(70);
来显示所有文本。