이상한 GUI 문제가 있습니다. JavaFX를 사용하여 앱을 만들고 있습니다. 이 응용 프로그램에는 제목, 레이블 및 tableView가있는 서로 다른 페이지가 있습니다. 시작 페이지에 초점을 맞추어 보겠습니다. 내 vbox에 tableView를 하나만 추가하면 모든 것이 정상적으로 보입니다.보이지 않는 TableView가 라벨을 덮고있는 이유는 무엇입니까?
vbox.getChildren().addAll(title, subtitle, reqTable);
그러나 세 개의 tableView를 모두 추가하면 제목 아래의 레이블이 잘립니다. 테이블은 아직 보이지 않습니다!
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;
}
}
}
글쎄, 당황스럽게 간단했다 ... 고마워! 감사합니다, jewelsea! – Ted