2424import javafx .scene .layout .BorderPane ; // 添加这个导入
2525import javafx .scene .layout .StackPane ; // 修改图标包导入
2626import javafx .scene .layout .VBox ;
27+ import javafx .scene .control .Tab ;
28+ import javafx .scene .control .TabPane ;
2729
2830public class MainView extends BorderPane {
31+ private TabPane tabPane ;
2932 private VBox navigationBar ;
3033 private StackPane contentArea ;
3134 private LaunchConfigView launchConfigView ;
@@ -39,6 +42,9 @@ public class MainView extends BorderPane {
3942 private GameLauncher gameLauncher ;
4043
4144 public MainView () {
45+ // 在构造函数开始处初始化 TabPane
46+ tabPane = new TabPane ();
47+
4248 // 初始化组件
4349 launchConfigView = new LaunchConfigView ();
4450 userInfoLabel = new Label ("V0.3Beta" );
@@ -94,6 +100,16 @@ public MainView() {
94100 backButton .setVisible (true );
95101 });
96102 gameSection .getChildren ().add (versionsButton );
103+
104+ // 添加趣味功能按钮
105+ Button funFeaturesButton = createNavButton ("趣味功能" );
106+ funFeaturesButton .setOnAction (event -> {
107+ contentArea .getChildren ().clear ();
108+ MoreFeaturesView moreFeaturesView = new MoreFeaturesView ();
109+ contentArea .getChildren ().addAll (moreFeaturesView , backButton );
110+ backButton .setVisible (true );
111+ });
112+ gameSection .getChildren ().add (funFeaturesButton );
97113
98114 // 创建启动游戏按钮
99115 launchButton = new Button ("启动游戏" );
@@ -183,6 +199,9 @@ private Button createNavButton(String text) {
183199 case "关于" :
184200 icon = new FontIcon (MaterialDesignI .INFORMATION );
185201 break ;
202+ case "趣味功能" :
203+ icon = new FontIcon (MaterialDesignI .INFORMATION );
204+ break ;
186205 }
187206
188207 if (icon != null ) {
@@ -433,4 +452,104 @@ private void loadSettings() {
433452 // 使用默认设置
434453 }
435454 }
455+
456+ private void initializeTabs () {
457+ // 添加趣味功能标签页
458+ Tab moreFeaturesTab = new Tab ("趣味功能" );
459+ moreFeaturesTab .setContent (new MoreFeaturesView ());
460+ moreFeaturesTab .setClosable (false );
461+ tabPane .getTabs ().add (moreFeaturesTab );
462+
463+ // ... 现有代码 ...
464+ }
465+
466+ private VBox createSidebar () {
467+ VBox sidebar = new VBox (10 );
468+ sidebar .setPadding (new Insets (20 ));
469+ sidebar .setStyle ("-fx-background-color: rgba(0, 0, 0, 0.5);" );
470+ sidebar .setPrefWidth (200 );
471+
472+ // 账户部分
473+ Label accountLabel = new Label ("账户" );
474+ accountLabel .getStyleClass ().add ("sidebar-section" );
475+
476+ Button accountSettingsBtn = new Button ("账户设置" );
477+ accountSettingsBtn .getStyleClass ().add ("sidebar-button" );
478+ accountSettingsBtn .setOnAction (e -> {
479+ contentArea .getChildren ().clear ();
480+ AccountSettingsView accountSettingsView = new AccountSettingsView ();
481+ contentArea .getChildren ().addAll (accountSettingsView , backButton );
482+ backButton .setVisible (true );
483+ });
484+
485+ // 游戏部分
486+ Label gameLabel = new Label ("游戏" );
487+ gameLabel .getStyleClass ().add ("sidebar-section" );
488+
489+ Button versionsBtn = new Button ("版本列表" );
490+ versionsBtn .getStyleClass ().add ("sidebar-button" );
491+ versionsBtn .setOnAction (e -> {
492+ contentArea .getChildren ().clear ();
493+ VersionView versionView = new VersionView ();
494+
495+ // 为选择版本按钮添加事件处理器
496+ versionView .getSelectButton ().setOnAction (event -> {
497+ String selectedVersion = versionView .getVersionList ().getSelectionModel ().getSelectedItem ();
498+ if (selectedVersion != null && !selectedVersion .isEmpty ()) {
499+ launchGame (selectedVersion );
500+ } else {
501+ showAlert ("未选择版本" , "请先从列表中选择一个游戏版本" );
502+ }
503+ });
504+
505+ contentArea .getChildren ().addAll (versionView , backButton );
506+ backButton .setVisible (true );
507+ });
508+
509+ // 趣味功能部分
510+ Label funLabel = new Label ("趣味功能" );
511+ funLabel .getStyleClass ().add ("sidebar-section" );
512+
513+ Button funFeaturesBtn = new Button ("趣味功能" );
514+ funFeaturesBtn .getStyleClass ().add ("sidebar-button" );
515+ funFeaturesBtn .setOnAction (e -> showFunFeatures ());
516+
517+ // 通用部分
518+ Label generalLabel = new Label ("通用" );
519+ generalLabel .getStyleClass ().add ("sidebar-section" );
520+
521+ Button settingsBtn = new Button ("常规设置" );
522+ settingsBtn .getStyleClass ().add ("sidebar-button" );
523+ settingsBtn .setOnAction (e -> {
524+ contentArea .getChildren ().clear ();
525+ settingsView = new SettingsView ();
526+ contentArea .getChildren ().addAll (settingsView , backButton );
527+ backButton .setVisible (true );
528+ });
529+
530+ Button aboutBtn = new Button ("关于" );
531+ aboutBtn .getStyleClass ().add ("sidebar-button" );
532+ aboutBtn .setOnAction (e -> {
533+ contentArea .getChildren ().clear ();
534+ AboutView aboutView = new AboutView ();
535+ contentArea .getChildren ().addAll (aboutView , backButton );
536+ backButton .setVisible (true );
537+ });
538+
539+ sidebar .getChildren ().addAll (
540+ accountLabel , accountSettingsBtn ,
541+ gameLabel , versionsBtn ,
542+ funLabel , funFeaturesBtn ,
543+ generalLabel , settingsBtn , aboutBtn
544+ );
545+
546+ return sidebar ;
547+ }
548+
549+ private void showFunFeatures () {
550+ contentArea .getChildren ().clear ();
551+ MoreFeaturesView moreFeaturesView = new MoreFeaturesView ();
552+ contentArea .getChildren ().addAll (moreFeaturesView , backButton );
553+ backButton .setVisible (true );
554+ }
436555}
0 commit comments