首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布到显示场景

发布到显示场景
EN

Stack Overflow用户
提问于 2020-05-06 17:22:31
回答 1查看 81关注 0票数 1

我在使用javafx时遇到了一个问题。我想显示一个单一的阶段,一个场景包含一个面板(主面板和菜单),包含自己的面板(信息)。

我的问题是:要么在窗口中看到一个双面板内容(如下图所示),要么根据设置场景、设置中心面板、显示窗口之间的操作顺序而设置一个空面板。错误显示:

以下是我想要看到的:

我使用的代码:

代码语言:javascript
复制
package org.HangmanGameFXViews;

import java.io.IOException;


import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {
    private Stage stagePrincipal;

    public Stage getStagePrincipal() {
        return stagePrincipal;
    }


    private BorderPane mainPane;
    private AnchorPane homePane;
    private AnchorPane rulesPane;

    @Override
    public void start(Stage primaryStage) {
        stagePrincipal = primaryStage;
        stagePrincipal.setTitle("Application de gestion de personnes");
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("view/MainContainer.fxml"));
        try {
            mainPane = loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }


        FXMLLoader loader2 = new FXMLLoader();
        loader2.setLocation(Main.class.getResource("view/Home.fxml"));
        try {
            homePane = loader2.load();
        } catch (IOException e) {
            e.printStackTrace();
        }

        mainPane.setCenter(homePane);
        Scene scene = new Scene(mainPane);
        stagePrincipal.setScene(scene);
        stagePrincipal.show();



    }

    public static void main(String[] args) {
        launch(args);
    }

}

Home.fxml:

代码语言:javascript
复制
 <?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane prefHeight="473.0" prefWidth="378.0" stylesheets="@textarea.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" prefHeight="27.0" prefWidth="368.0" text="Bienvenue dans le jeu du PENDU" textAlignment="CENTER">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
      <ImageView fitHeight="291.0" fitWidth="539.0" layoutX="10.0" layoutY="27.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@../../../../resources/pictures/homePicture.jpg" />
         </image>
      </ImageView>
      <TextArea editable="false" layoutX="8.0" layoutY="318.0" prefHeight="147.0" prefWidth="368.0" text="Vous avez 7 coups pour trouver le mot cacher et si vous réussissez... et bien on recommence!&#10;&#10;Plus vous avez trouvez de mots, plus votre score grandira!! Alors à vous de jouer!&#10;PROVERBE : &quot;Pas vu, pas pris!&#10;                     Pris! PENDU!!!&quot;" wrapText="true" />
   </children>
</AnchorPane>

MainContainers.fxml:

代码语言:javascript
复制
 <?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.HangmanGameFXViews.view.MenuesActions">
   <top>
      <MenuBar maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="500.0" prefWidth="400.0" BorderPane.alignment="CENTER">
         <menus>
            <Menu mnemonicParsing="false" text="Fichiers">
               <items>
                  <MenuItem mnemonicParsing="false" text="Nouveau" />
                  <MenuItem mnemonicParsing="false" onAction="#switchToRules" text="Règles" />
                  <MenuItem mnemonicParsing="false" text="Quitter" />
               </items>
            </Menu>
            <Menu mnemonicParsing="false" text="À propos" />
         </menus>
      </MenuBar>
   </top>
</BorderPane>

Rules.fxml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>


<AnchorPane prefHeight="413.0" prefWidth="459.0" stylesheets="@textarea.css" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/11.0.1">
   <children>
      <Pane prefHeight="200.0" prefWidth="459.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <children>
            <Label alignment="CENTER" contentDisplay="CENTER" layoutX="35.0" layoutY="3.0" maxWidth="1.7976931348623157E308" text="Le jeu du PENDU" textAlignment="CENTER">
               <font>
                  <Font name="Arial Black" size="14.0" />
               </font>
            </Label>
            <TextArea editable="false" layoutY="25.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="76.0" prefWidth="459.0" text="Vous avez 7 coups pour trouver le mot caché ! Et si vous réussissez : on recommence !&#10;Plus vous acez trouvé de mots, plus votre score grandira !! Alors à vous de jouer !" wrapText="true" />
            <TextArea editable="false" layoutY="118.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="179.0" prefWidth="459.0" text="COMPTES DES POINTS :&#10;                        &#10;                           Mot trouve sans erreur...............................100Pts&#10;                           Mot trouve avec 1 erreur.............................50Pts&#10;                           Mot trouve avec 2 erreurs...........................35Pts&#10;                           Mot trouve avec 3 erreurs...........................25Pts&#10;                           Mot trouve avec 4 erreurs............................15Pts&#10;                           Mot trouve avec 5 erreurs............................10Pts&#10;                           Mot trouve avec 6 erreurs............................5Pts" wrapText="true">
               <font>
                  <Font name="System Bold" size="12.0" />
               </font>
            </TextArea>
            <TextArea editable="false" layoutY="296.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="117.0" prefWidth="459.0" text="Je vous souhaite bien du plaisir ....&#10;Et si vous pensez pouvoir trouver un mot en un coup, c'est que vous pensez que le dictionnaire est petit !&#10;Hors, pour votre information il comprend plus de 330 000 mots ... donc bonne chance." wrapText="true" />
         </children>
      </Pane>

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 14:56:26

我认为可以用以下3个文件演示所需布局的MRE:

代码语言:javascript
复制
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws IOException {

        BorderPane mainPane = FXMLLoader.load(Main.class.getResource("MainContainer.fxml"));
        AnchorPane homePane =  FXMLLoader.load(Main.class.getResource("Home.fxml"));
        mainPane.setCenter(homePane);

        Scene scene = new Scene(mainPane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

MainContainer.fxml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="200.0" prefWidth="500.0" 
xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
   <top>
      <MenuBar maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308"  prefWidth="400.0" BorderPane.alignment="CENTER">
      <!--THIS WAS THE REASON FOR THE WRONG LAYOUT prefHeight="500.0" --> 
         <menus>
            <Menu mnemonicParsing="false" text="Fichiers">
               <items>
                  <MenuItem mnemonicParsing="false" text="Nouveau" />
                  <MenuItem mnemonicParsing="false" text="Quitter" />
               </items>
            </Menu>
            <Menu mnemonicParsing="false" text="À propos" />
         </menus>
      </MenuBar>
   </top>
</BorderPane>

Home.fxml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane prefHeight="473.0" prefWidth="378.0" stylesheets="@textarea.css" xmlns="http://javafx.com/javafx/11.0.1" 
xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Label alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" prefHeight="27.0" prefWidth="368.0" 
      text="Bienvenue dans le jeu du PENDU" textAlignment="CENTER">
         <font>
            <Font name="System Bold" size="18.0" />
         </font>
      </Label>
      <ImageView fitHeight="291.0" fitWidth="539.0" layoutX="10.0" layoutY="27.0" pickOnBounds="true" preserveRatio="true">

      </ImageView>
      <TextArea editable="false" layoutX="8.0" layoutY="318.0" prefHeight="147.0" prefWidth="368.0" 
      text="Vous avez 7 coups pour trouver le mot cacher et si vous réussissez... et bien on recommence!&#10;&#10;Plus vous avez trouvez de mots, plus votre score grandira!! Alors à vous de jouer!&#10;PROVERBE : &quot;Pas vu, pas pris!&#10;                     Pris! PENDU!!!&quot;" wrapText="true" />
   </children>
</AnchorPane>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61641314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档