2016-10-03 3 views
0

Also ich versuche, 3 Tasten auf der Oberseite und 3 Radio-Tasten auf der Unterseite, aber wenn ich es laufen, es kommt alles komisch raus, würde es lieben, wenn mir jemand helfen kann. Ich bin immer noch ziemlich neu in GUI, so dass mein Code völlig falsch sein könnte.Javafx GUI Programmierung

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.RadioButton; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.paint.Color; 


public class ColorFactory extends Application { 
    @Override 
    public void start(Stage stage) 
    { 
     BorderPane pane = new BorderPane(); 
     // sets the width and height 
     stage.setHeight(300); 
     stage.setWidth(500); 

     //calls the mainpanel constructor 
     pane.setCenter(new MainPanel()); 
     //make the mainpanel visible using the setVisible(true) 

     //call the stage.setScene 
     stage.setScene(new Scene(pane)); 
     // set title to Color Factory 
     stage.setTitle("Color Factory"); 
     //call stage.show 
     stage.show(); 
    } 
    private class MainPanel extends BorderPane 
    { 

     public MainPanel() 
     { 
      HBox Tpanel = new HBox(25); 
      Tpanel = new HBox(25); 
      Tpanel.setPrefWidth(500); 
      Tpanel.setPrefHeight(50); 
      Tpanel.setAlignment(Pos.TOP_CENTER); 
      Button red = new Button("Red"); 
      red.setStyle("-fx-background-color: red"); 
      Button yellow = new Button("Yellow"); 
      yellow.setStyle("-fx-background-color: yellow;"); 
      Button orange = new Button("Orange"); 
      orange.setStyle("-fx-background-color: orange;"); 
      Tpanel.setStyle("-fx-background-color: white;"); 
      Tpanel.getChildren().addAll(red,yellow,orange); 

      HBox Bpanel = new HBox(15); 
      Bpanel.setPrefWidth(500); 
      Bpanel.setPrefHeight(75); 
      RadioButton green = new RadioButton("Green"); 
      RadioButton blue = new RadioButton("Blue"); 
      RadioButton cyan = new RadioButton("Cyan"); 
      green.setStyle("-fx-background-color: green;"); 
      blue.setStyle("-fx-background-color: blue;"); 
      cyan.setStyle("-fx-background-color: cyan;"); 
      Bpanel.setAlignment(Pos.BOTTOM_CENTER); 
      Bpanel.getChildren().addAll(green,blue,cyan); 

      Label label = new Label("Top buttons change the panel color and bottom radio buttons change the text color"); 
      label.setAlignment(Pos.CENTER_LEFT); 
      label.setTextFill(Color.BLUE); 

      getChildren().addAll(Tpanel,Bpanel,label); 
      HBox.setMargin(Tpanel, new Insets(5,10,5,10)); 
      HBox.setMargin(Bpanel, new Insets(5,10,5,10)); 
      HBox.setMargin(label, new Insets(150,10,5,10)); 

     } 

    } 

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

Antwort

0

Ihre MainPanel ist ein BorderPane: einfach das Hinzufügen von Knoten zu es wird sie alle in den oben zu setzen standardmäßig links (so sind sie alle auf der jeweils anderen Seite). Wenn Sie eine BorderPane verwenden, müssen Sie setCenter(...), setTop(...), setLeft(...) usw. anrufen, um die Knoten zu positionieren.

z.B .:

// getChildren().addAll(Tpanel,Bpanel,label); 
    setTop(Tpanel); 
    setBottom(Bpanel); 
    setCenter(label); 
+0

getChildren() addAll (TPanel, BPanel, label). \t \t \t setTop (T-Panel); \t \t \t SetBottom (Bpanel); \t \t \t setCenter (Etikett); so was? Ich hatte keine Fehler, aber das Programm lief nicht. – myst

+0

Ich lief das Programm: es lief gut. Es hatte nur die Kontrollen an der falschen Stelle. Ersetzen Sie einfach die Zeile, die Sie haben, mit den Codezeilen, die ich in der Antwort gezeigt habe. –