2015-05-07 13 views
5

Sto cercando di utilizzare Scene Builder per gestire una GUI complicata su cui sto lavorando e per semplicità sto provando a correggere l'altezza e la larghezza della finestra a metà della altezza dello schermoJavaFX Scene Builder - Utilizzo di valori variabili

Il problema che sto incontrando è che le vostre scene Builder non mi permette di inserire i valori personalizzati in "Pref Larghezza" e "campi Pref Altezza", e sarà solo farmi entrare qualcosa sulla falsariga di "USE_COMPUTED_SIZE"

Guardando direttamente il file FXML, ho trovato questo:

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="0.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="sudokusolver.FXMLDocumentController"> 

Ma io sono stato in grado di trovare i possibili valori di rimpiazzo per "-Infinity" ovunque. Sto cercando di fare qualcosa sulla falsariga di:

Screen.getPrimary().getVisualBounds().getHeight()/2; 

Eventuali suggerimenti o idee su come personalizzare valori come questo?

risposta

0

hmmmm, okey ...

Non sono sicuro di quello che stai cercando, se avete bisogno di impostare l'altezza e la larghezza delle finestre alla metà dell'altezza dello schermo dell'utente e la larghezza, ci sono molti modo per esso, il più semplice è come questo:

public class Main extends Application 
{ 
    public void start(Stage primaryStage) throws Exception 
    { 

     Parent page = (Parent) FXMLLoader.load(Main.class.getResource("Untitled.fxml")); 

     // get the user's screen size 
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 

     // get width and height of screen and divide them by two 
     double width = screenSize.getWidth()/2; 
     double height = screenSize.getHeight()/2; 

     // set the result to the scene 
     Scene scene = new Scene(page,width,height); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("Window with half size of screen"); 
     primaryStage.show(); 
    } 

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

    } 
} 

Oltre che hai detto "Fix altezza e la larghezza della finestra ...", Se vuoi dire di vietare all'utente di ridimensionare la finestra in modo da poter utilizzare sotto il codice:

primaryStage.setResizable(false); 
+0

Così t non c'è modo di farlo con Scene Builder o il file FXML, in pratica? Perché il codice che hai fornito è solo una versione completa della mia linea di codice di esempio che stavo cercando di ottenere attraverso il generatore di scene. – steinybear

+0

@steinybear: fortunatamente o sfortunatamente non c'è modo di avere larghezza o altezza dinamiche per un file FXML, nei file FXML, è necessario impostarne l'altezza e il valore. sebbene, se necessario, è possibile modificare le dimensioni di Windows (fasi) in ciascuna classe Controller del file FXML. come sai, possiamo definire una classe controller per ogni file fxml, così puoi impostare nuova altezza o larghezza sul tuo Stage. Ricordati che i file fxml sono file indipendenti che non hanno alcuna relazione con lo schermo, quindi devono fare i tuoi bisogni solo con il codice java (fino ad ora, forse in futuro Oracle rilascia nuove funzionalità, ma non credo ...) –

Problemi correlati