IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

adaptation de la fenêtre à l'écran


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Homme Profil pro
    dev
    Inscrit en
    octobre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : octobre 2020
    Messages : 25
    Points : 16
    Points
    16
    Par défaut adaptation de la fenêtre à l'écran
    Bonjour j'ai un petit souci avec ma fenêtre qui sur mon ecran s'affiche très bien mais sur l'ecran des autres il y a des choses qui dépassent ou qui sont invisible, après quelques petites recherches j'ai vu que j'avais mis des valeurs absolu pour mon canvas sauf que dans scenebuilder je ne peux pas mettre quelque chose comme MAX_VALUE et dans le fxml je ne peux pas non plus donc je vous demande si vous avez des solutions, des infos à ce sujet svp merci.
    fxml:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import javafx.scene.canvas.Canvas?>
    <?import javafx.scene.control.Button?>
    <?import javafx.scene.control.CheckBox?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.control.ListView?>
    <?import javafx.scene.image.Image?>
    <?import javafx.scene.image.ImageView?>
    <?import javafx.scene.layout.BorderPane?>
    <?import javafx.scene.layout.ColumnConstraints?>
    <?import javafx.scene.layout.GridPane?>
    <?import javafx.scene.layout.Pane?>
    <?import javafx.scene.layout.RowConstraints?>
    <?import javafx.scene.text.Font?>
     
    <BorderPane maxHeight="1.7976931348623157E308"
    	maxWidth="1.7976931348623157E308" minHeight="-Infinity"
    	minWidth="-Infinity" xmlns="http://javafx.com/javafx/8.0.171"
    	xmlns:fx="http://javafx.com/fxml/1"
    	fx:controller="control.EspaceController">
    	<right>
    		<GridPane maxHeight="1.7976931348623157E308"
    			maxWidth="1.7976931348623157E308" prefHeight="800.0"
    			prefWidth="279.0" BorderPane.alignment="CENTER">
    			<columnConstraints>
    				<ColumnConstraints hgrow="SOMETIMES"
    					minWidth="10.0" />
    			</columnConstraints>
    			<rowConstraints>
    				<RowConstraints maxHeight="234.0" minHeight="0.0"
    					prefHeight="48.0" vgrow="SOMETIMES" />
    				<RowConstraints maxHeight="480.0" minHeight="0.0"
    					prefHeight="47.0" vgrow="SOMETIMES" />
    				<RowConstraints maxHeight="800.0" minHeight="0.0"
    					prefHeight="617.0" vgrow="SOMETIMES" />
    				<RowConstraints maxHeight="600.0" minHeight="10.0"
    					prefHeight="45.0" vgrow="SOMETIMES" />
    				<RowConstraints maxHeight="600.0" minHeight="0.0"
    					prefHeight="45.0" vgrow="SOMETIMES" />
    			</rowConstraints>
    			<children>
    				<Pane maxHeight="1.7976931348623157E308"
    					maxWidth="1.7976931348623157E308" prefHeight="870.0"
    					prefWidth="280.0" GridPane.rowIndex="2">
    					<children>
    						<Button layoutX="90.0" layoutY="30.0"
    							mnemonicParsing="false" onMousePressed="#rotationXpositive"
    							onMouseReleased="#stop" prefHeight="50.0" prefWidth="100.0"
    							text="^">
    							<font>
    								<Font size="25.0" />
    							</font>
    						</Button>
    						<Button layoutX="23.0" layoutY="70.0"
    							mnemonicParsing="false" onMousePressed="#rotationYnegative"
    							onMouseReleased="#stop" prefHeight="60.0" prefWidth="60.0"
    							text="&lt;">
    							<font>
    								<Font size="25.0" />
    							</font>
    						</Button>
    						<Button layoutX="200.0" layoutY="70.0"
    							mnemonicParsing="false" onMousePressed="#rotationYpositive"
    							onMouseReleased="#stop" prefHeight="60.0" prefWidth="60.0"
    							text="&gt;">
    							<font>
    								<Font size="25.0" />
    							</font>
    						</Button>
    						<Button layoutX="90.0" layoutY="130.0"
    							mnemonicParsing="false" onMousePressed="#rotationXnegative"
    							onMouseReleased="#stop" prefHeight="50.0" prefWidth="100.0"
    							text="v">
    							<font>
    								<Font size="25.0" />
    							</font>
    						</Button>
    						<Label layoutX="126.0" layoutY="6.0" text="+X" />
    						<Label layoutX="46.0" layoutY="45.0" text="-Y" />
    						<Label layoutX="130.0" layoutY="110.0" text="-X" />
    						<Label layoutX="221.0" layoutY="45.0" text="+Y" />
    						<Label layoutX="53.0" layoutY="169.0" text="-Z" />
    						<Label layoutX="207.0" layoutY="169.0" text="+Z" />
    						<Button contentDisplay="GRAPHIC_ONLY" layoutX="23.0"
    							layoutY="188.0" mnemonicParsing="false"
    							onMousePressed="#rotationZnegative" onMouseReleased="#stop">
    							<graphic>
    								<ImageView id="logo" fitHeight="60.0" fitWidth="60.0"
    									pickOnBounds="true">
    									<image>
    										<Image url="@../images/fleche_droite.jpg" />
    									</image>
    								</ImageView>
    							</graphic>
    						</Button>
    						<Button layoutX="176.0" layoutY="188.0"
    							mnemonicParsing="false" onMousePressed="#rotationZpositive"
    							onMouseReleased="#stop">
    							<graphic>
    								<ImageView id="logo" fitHeight="60.0" fitWidth="60.0"
    									pickOnBounds="true">
    									<image>
    										<Image url="@../images/fleche_gauche.jpg" />
    									</image>
    								</ImageView>
    							</graphic>
    						</Button>
    						<CheckBox fx:id="displayFacesCheckbox" layoutX="10.0"
    							layoutY="270.0" mnemonicParsing="false" onAction="#afficherFaces"
    							selected="true" text="Vue en face" />
    						<CheckBox fx:id="displayStrokesCheckbox" layoutX="135.0"
    							layoutY="270.0" mnemonicParsing="false"
    							onAction="#afficherSegments" selected="true"
    							text="Vue en segment" />
    					</children>
    				</Pane>
    				<Button alignment="CENTER" maxHeight="1.7976931348623157E308"
    					maxWidth="1.7976931348623157E308" mnemonicParsing="false"
    					onAction="#rechercheFichier" text="Choisir un fichier"
    					GridPane.rowIndex="4" />
    				<Button alignment="CENTER" maxHeight="1.7976931348623157E308"
    					maxWidth="1.7976931348623157E308" mnemonicParsing="false"
    					onAction="#zoom" text="ZOOM" />
    				<Button alignment="CENTER" maxHeight="1.7976931348623157E308"
    					maxWidth="1.7976931348623157E308" mnemonicParsing="false"
    					onAction="#dezoom" text="DEZOOM" GridPane.rowIndex="1" />
    			</children>
    		</GridPane>
    	</right>
    	<center>
    		<Canvas fx:id="canvas" height="850" width="1000"
    			onMouseDragged="#mouseDrag" onMousePressed="#mousePressed"
    			onMouseReleased="#mouseReleased" onScroll="#scroll"  />
    	</center>
    	<left>
    		<ListView maxHeight="1.7976931348623157E308"
    			maxWidth="1.7976931348623157E308" BorderPane.alignment="CENTER" />
    	</left>
    </BorderPane>

    Le canvas est au milieu je veux qu'il prenne toute la place du milieu.
    J'ai un BorderPane avec à gauche TreeList au milieu Canvas à droite un GridPane avec les boutons etc à l'intérieur
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    août 2005
    Messages
    6 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 6 590
    Points : 22 925
    Points
    22 925
    Billets dans le blog
    50
    Par défaut
    Peux-tu STP nous monter le code qui charge ce FXML et l'insère dans la scène ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre à l'essai
    Homme Profil pro
    dev
    Inscrit en
    octobre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : octobre 2020
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Je ne place rien dans cette classe mais la voici :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    package view;
     
    import javafx.application.Application;
    import javafx.event.EventHandler;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.input.KeyCode;
    import javafx.scene.input.KeyEvent;
    import javafx.stage.Stage;
     
    public class Acceuil extends Application{
    	@Override
    	public void start(Stage stage) throws Exception {
    		FXMLLoader loader=new FXMLLoader(Acceuil.class.getResource("Fenetre.fxml"));
    		Parent root=loader.load();
    		Scene scene=new Scene(root);
     
    		scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
    	           @Override
    	           public void handle(KeyEvent t) {
    	               KeyCode key = t.getCode();
    	               if (key == KeyCode.ESCAPE){
    	                   stage.close();
    	               }
    	           }});
     
    		stage.setFullScreen(true);
    		stage.setFullScreenExitHint("appuyez sur esc pour fermer la fenêtre");
    		stage.setTitle("Projet de modélisation groupe G6");
    		stage.setScene(scene);
    		stage.show();
    	}
     
    	public static void main(String[] args) {
    		launch();
    	}
    }
    (oui le titre de la fenêtre est normal c'est un projet de dut)

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    août 2005
    Messages
    6 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 6 590
    Points : 22 925
    Points
    22 925
    Billets dans le blog
    50
    Par défaut
    Ok, après m’être remis de la fin d’année et avoir forcé mon cerveau a se remettre en route, un des soucis que tu as c'est que Canvas n'est pas un nœud redimensionnable et donc qu'il conservera les dimensions que tu lui as affectées.

    La solution la plus simple c'est de créer une nouvelle classe ResizableCanvas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    import javafx.scene.canvas.Canvas;
    import javafx.scene.paint.Color;
     
    public final class ResizableCanvas extends Canvas {
     
        @Override
        public boolean isResizable() {
            return true;
        }
     
        @Override
        public double minHeight(double width) {
            return 64;
        }
     
        @Override
        public double maxHeight(double width) {
            return Integer.MAX_VALUE;
        }
     
        @Override
        public double prefHeight(double width) {
            return minHeight(width);
        }
     
        @Override
        public double minWidth(double height) {
            return 0;
        }
     
        @Override
        public double maxWidth(double height) {
            return Integer.MAX_VALUE;
        }
     
        @Override
        public double prefWidth(double height) {
            return minWidth(height);
        }
     
        @Override
        public void resize(double width, double height) {
            super.setWidth(width);
            super.setHeight(height);
            // Debug.
            getGraphicsContext2D().clearRect(0, 0, width, height);
            getGraphicsContext2D().setStroke(Color.RED);
            getGraphicsContext2D().setLineWidth(1);
            getGraphicsContext2D().strokeRect(0, 0, width, height);
        }
    }
    Si tu modifies ton FXML ainsi, tu peux ensuite injecter cette classe via ton controller.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       <center>
    <!--        <Canvas fx:id="canvas" height="850" width="1000"-->
    <!--                onMouseDragged="#mouseDrag" onMousePressed="#mousePressed"-->
    <!--                onMouseReleased="#mouseReleased" onScroll="#scroll"/>-->
            <StackPane fx:id="canvasPane" style="-fx-border-color: blue; -fx-padding: 0px"/>
        </center>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        private ResizableCanvas canvas = new ResizableCanvas();
        @FXML
        private Pane canvasPane;
     
        public void initialize() {
            canvas.setOnMouseDragged(this::mouseDrag);
            canvas.setOnMousePressed(this::mousePressed);
            canvas.setOnMouseReleased(this::mouseReleased);
            canvas.setOnScroll(this::scroll);
            canvasPane.getChildren().add(canvas);
            /// Debug.
            canvasPane.widthProperty().addListener((obs, oldValue, newValue) -> System.out.printf("host: %fx%f canvas : %fx%f%n", canvasPane.getWidth(), canvasPane.getHeight(), canvas.getWidth(), canvas.getHeight()));
            canvasPane.heightProperty().addListener((obs, oldValue, newValue) -> System.out.printf("host: %fx%f canvas : %fx%f%n", canvasPane.getWidth(), canvasPane.getHeight(), canvas.getWidth(), canvas.getHeight()));
        }
    Si la classe ResizableCanvas est dans le CLASSPATH (ex: dans le meme package que le FXML), il est meme posible d'ecrire :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <center>
    <!--        <Canvas fx:id="canvas" height="850" width="1000"-->
    <!--                onMouseDragged="#mouseDrag" onMousePressed="#mousePressed"-->
    <!--                onMouseReleased="#mouseReleased" onScroll="#scroll"/>-->
    <!--        <StackPane fx:id="canvasPane" style="-fx-border-color: blue; -fx-padding: 0px"/>-->
            <ResizableCanvas fx:id="canvas"
                onMouseDragged="#mouseDrag" onMousePressed="#mousePressed"
                onMouseReleased="#mouseReleased" onScroll="#scroll"/>
        </center>


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //    @FXML
    //    private Canvas canvas;
    //    private ResizableCanvas canvas = new ResizableCanvas();
    //    @FXML
    //    private Pane canvasPane;
        @FXML
        private ResizableCanvas canvas;
     
        public void initialize() {
    //        canvas.setOnMouseDragged(this::mouseDrag);
    //        canvas.setOnMousePressed(this::mousePressed);
    //        canvas.setOnMouseReleased(this::mouseReleased);
    //        canvas.setOnScroll(this::scroll);
    //        canvasPane.getChildren().add(canvas);
    //        canvasPane.widthProperty().addListener((obs, oldValue, newValue) -> System.out.printf("host: %fx%f canvas : %fx%f%n", canvasPane.getWidth(), canvasPane.getHeight(), canvas.getWidth(), canvas.getHeight()));
    //        canvasPane.heightProperty().addListener((obs, oldValue, newValue) -> System.out.printf("host: %fx%f canvas : %fx%f%n", canvasPane.getWidth(), canvasPane.getHeight(), canvas.getWidth(), canvas.getHeight()));
        }
    Pour l'ajouter dans SceneBuilder ça va demander un peu plus de boulot par contre, il faut empaqueter la classe ResizableCanvas dans un fichier JAR et l'ajouter dans la bibliothèque des composants de SceneBuilder.

    PS : tu as aussi un soucis avec la taille verticale de ta "télécommande" sur le cote droit qui semble avoir une taille min verticale assez généreuse.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre à l'essai
    Homme Profil pro
    dev
    Inscrit en
    octobre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : octobre 2020
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    ok je vois merci beaucoup, je savais pas que canvas n'étais pas resizable merci. du coup je vais suivre tes conseils et faire ça je mettrai en résolu si pas de problème merci encore x).

    EDIT: re dans le fxml j'ai juste fait
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
     <?import resizableCanvas.ResizableCanvas?>
    et ça fonctionne comme tu l'as montré avec <ResizableCanvas ....> merci et bonne nuit x)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Adapter taille d'un userform à la taille de la fenêtre (ou écran)
    Par ankoubzh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2009, 20h37
  2. Réponses: 2
    Dernier message: 17/07/2006, 22h10
  3. problème fenêtre plein écran
    Par chti_juanito dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 01/02/2006, 20h13
  4. Réponses: 2
    Dernier message: 18/01/2006, 19h19
  5. Simuler le clavier sur une fenêtre plein-écran ?
    Par Cracking_Cow dans le forum Windows
    Réponses: 10
    Dernier message: 23/08/2005, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo