java - JavaFX - 在使用选项卡时将 GUI 拆分为单独的类
问题描述
我正在尝试制作一个带有选项卡式 GUI 的程序,其中每个选项卡的内容都是它们自己的类。我基本上想做这里所做的事情,但是使用标签。仅仅是 Manager 类:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.stage.Stage;
public class Manager extends Application {
private TabPane tabPane;
private Tab dcTab;
public Manager() {
dcTab = new Tab();
tabPane = new TabPane();
DistributionCenter dcMenu = new DistributionCenter();
dcTab.setText("Distribution Center");
dcTab.setContent(dcMenu);
tabPane.getTabs().add(dcTab);
}
@Override
public void start(Stage primaryStage) throws Exception {
Group root = new Group();
Scene scene = new Scene(tabPane, 600, 500);
DistributionCenter dcMenu = new DistributionCenter();
root.getChildren().add(dcMenu);
dcTab.setContent(dcMenu);
primaryStage.setScene(scene);
primaryStage.setTitle("909th Wing");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这是我的 DistributionCenter 课程:
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
public class DistributionCenter extends Pane {
private Button testBt1;
public DistributionCenter() {
Pane dcMenu = new Pane();
testBt1 = new Button("Button");
dcMenu.getChildren().addAll(testBt1);
testBt1.setLayoutX(30);
testBt1.setLayoutY(100);
}
}
请注意,此时 DistributionCenter 的内容只是一个测试。
解决方案
您永远不会将您的添加Button
到实际DistributionCenter
窗格中。相反,您正在Pane
该类中创建一个新的并将按钮添加到它。
记住,DistributionCenter
是一个Pane
所以它有自己的孩子。您无需在其中创建新Pane
的。
更新您的DistributionCenter
类以仅配置自身:
public DistributionCenter() {
testBt1 = new Button("Button");
getChildren().addAll(testBt1);
}
这将解决您的问题,但除非您需要实现不同的行为,否则您永远不应该扩展一个类。如果您只是Node
像这样配置 a,您应该只创建 a 的实例Pane
并正确配置它。
推荐阅读
- python - 数据分析的图表问题与 plotly,pandas
- matlab - 在matlab中计算函数时出错
- python - Pandas 中 .loc 循环中的赋值
- postman - Clockify api 获取所有考勤数据
- css - Vuetify 自定义样式的 vuetify 组件,如 v-textarea 和 css
- php - laravel 8 Eloquent 查询构建器
- python - 在 Windows 10 上的 Anaconda 上安装 Graphlab create(Python、机器学习)
- android - 如何在Android中命名协程?
- python - 将数据从网络抓取到 Excel 的问题
- sql - SQL查询过滤多次购买相同产品且数量大于5的客户