我有一个奇怪的 GUI 问题。我正在使用 JavaFX 制作应用程序。该应用程序有不同的页面,每个页面都有标题、标签和 tableView。让我们关注欢迎页面。如果我只在我的 vbox 中添加一个 tableView,一切看起来都很正常。
vbox.getChildren().addAll(title, subtitle, reqTable);
但是当我添加所有三个 tableViews 时,标题下方的标签会被切断。桌子甚至还看不见!
vbox.getChildren().addAll(title, subtitle, reqTable, tempTable, ontTable);
知道为什么会发生这种情况吗?这是我的完整代码。谢谢!
package FLOOR;
// --- Imports
import javafx.application.Application;
import javafx.beans.property.StringProperty;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
// --- Main Class
public class Example extends Application {
// --- All Pages
final Page[] pages = new Page[] {
new Page("Welcome!",
"Use the File menu to... \n"),
};
// --- All Tables
TableView<ObservableList<StringProperty>> reqTable = new TableView<>();
TableView<ObservableList<StringProperty>> tempTable = new TableView<>();
TableView<ObservableList<StringProperty>> ontTable = new TableView<>();
// --- Current Page
final Label title = new Label();
final Label subtitle = new Label();
// --- Main
public static void main(String[] args) {
launch(args);
}
// --- Start
@Override
public void start(Stage stage) {
// --- Stage & Scene
stage.setTitle("APP");
Scene scene = new Scene(new VBox(), 900, 500);
MenuBar menuBar = new MenuBar();
// --- VBox
final VBox vbox = new VBox();
vbox.setAlignment(Pos.CENTER);
vbox.setSpacing(10);
vbox.setPadding(new Insets(5, 20, 0, 20));
vbox.getChildren().addAll(title, subtitle, reqTable, tempTable, ontTable);
//vbox.getChildren().addAll(title, subtitle, reqTable);
reqTable.setVisible(false);
tempTable.setVisible(false);
ontTable.setVisible(false);
reqTable.setMinHeight(300);
tempTable.setMinHeight(300);
ontTable.setMinHeight(300);
reqTable.translateYProperty().set(100);
tempTable.translateYProperty().set(-100);
ontTable.translateYProperty().set(-300);
// --- Welcome Page
title.setFont(new Font("Arial", 24));
title.translateYProperty().set(10);
title.setText(pages[0].title);
subtitle.setText(pages[0].subtitle);
subtitle.setMinHeight(10);
// --- Menus
// --- File Menu
// --- Import Submenu
Menu menuFile = new Menu("File");
Menu importMenu = new Menu("Import");
MenuItem opt1 = new MenuItem("opt_1");
MenuItem opt2 = new MenuItem("opt_2");
MenuItem opt3 = new MenuItem("opt_3");
importMenu.getItems().addAll(opt1, opt2, opt3);
MenuItem export = new MenuItem("Export");
MenuItem exit = new MenuItem("Exit");
menuFile.getItems().addAll(importMenu, export, new SeparatorMenuItem(), exit);
menuBar.getMenus().addAll(menuFile);
// --- Show
((VBox) scene.getRoot()).getChildren().addAll(menuBar, vbox);
stage.setScene(scene);
stage.show();
}
// Page Class
private class Page {
public String title;
public String subtitle;
public Page(String title, String subtitle) {
this.title = title;
this.subtitle = subtitle;
}
}
}