2016-05-01 7 views
1

Ich brauche etwas Hilfe Ich habe dieses Pizza-Bestellsystem erstellt, das die Zutaten zu einer Liste hinzufügt, wenn Sie den Radiobutton drücken und dann die Größe der Pizza zu einer Liste hinzufügen. Das einzige, was ich jetzt brauche, ist der Bestellknopf. Ich glaube der Code ist richtig, aber aus irgendeinem Grund ist der Knopf nicht da. Ich bin mir nicht sicher, ob ich etwas falsch gemacht habe. Der Button ist mit der Ortsangabe gekennzeichnet. Vielen Dank für die Hilfe hier ist der Code:Java - Schaltfläche nicht hinzugefügt

package loan; 

import javafx.application.Application; 
import javafx.beans.binding.StringBinding; 
import javafx.beans.property.BooleanProperty; 
import javafx.beans.property.ReadOnlyObjectProperty; 
import javafx.beans.property.SimpleStringProperty; 
import javafx.beans.property.StringProperty; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.ChoiceBox; 
import javafx.scene.control.RadioButton; 
import javafx.scene.control.TextArea; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 
import loan.pizzas.OrderHandler; 

class User { 
    private StringProperty order = new SimpleStringProperty(); 

    public String getOrder() { 
     return order.get(); 
    } 

    public void setOrder(String order) { 
     this.order.set(order); 
    } 

    public StringProperty orderProperty() { 
     return order; 
    } 
} 

public class demo extends Application { 

    private User user = new User(); 

    @Override 
    public void start(Stage stage) throws Exception { 
     stage.setTitle("Pizza System"); 
     Button btn = new Button(); 
     btn.setText("place order"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent event) { 
       System.out.println("Order has been placed."); 
       } 
     }); 



     RadioButton tomatoButton = new RadioButton("Tomato"); 
     RadioButton pepperButton = new RadioButton("Pepper"); 
     RadioButton mushroomButton = new RadioButton("Mushrooms"); 

     ChoiceBox<String> pizzaType = new ChoiceBox<String>(); 
     pizzaType.getItems().addAll("", "Small", "Medium", "Large"); 
     pizzaType.getSelectionModel().selectFirst(); 

     HBox topHBox = new HBox(15.0, tomatoButton, pepperButton, mushroomButton, pizzaType); 

     // create custom Binding that binds selection of radio buttons and choice box 
     StringBinding orderBinding = createOrderBinding(tomatoButton.selectedProperty(), pepperButton.selectedProperty(), mushroomButton.selectedProperty(), pizzaType.getSelectionModel().selectedItemProperty()); 
     // bind orderBinding to orderProperty of User 
     user.orderProperty().bind(orderBinding); 

     TextArea orderArea = new TextArea(); 
     // bind orderProperty of User to textProperty of TextArea 
     orderArea.textProperty().bindBidirectional(user.orderProperty()); 

     BorderPane root = new BorderPane(); 
     root.setTop(topHBox); 
     root.setCenter(orderArea); 

     Scene scene = new Scene(root, 400, 300); 
     stage.setScene(scene); 
     stage.show(); 

    } 

    /** 
    * Creates StringBinding between 4 provided arguments. Binding means that when value of one bound property is changed the whole binding is recomputed in computeValue method. 
    * The value of computeValue is bound to User.orderProperty 
    */ 
    public StringBinding createOrderBinding(BooleanProperty tomato, BooleanProperty pepper, BooleanProperty mushroom, ReadOnlyObjectProperty<String> selectedPizzaType) { 
     StringBinding binding = new StringBinding() { 
      { 
       // bind 4 provided properties. 
       super.bind(tomato, pepper, mushroom, selectedPizzaType); 
      } 

      /* 
      * Fires each time bound property is modified. 
      */ 
      @Override 
      protected String computeValue() { 
       StringBuilder sb = new StringBuilder("Pizza content:\n"); 

       if (tomato.get()) 
        sb.append("\tTomato\n"); 
       if (pepper.get()) 
        sb.append("\tPepper\n"); 
       if (mushroom.get()) 
        sb.append("\tMushroom\n"); 

       sb.append("Pizza type:\n").append("\t" + selectedPizzaType.get()); 
       return sb.toString(); 
      } 
     }; 
     return binding; 
    } 

    public static void main(String[] args) { 
     Application.launch(args); 
    } 
} 
+1

"Ich glaube, der Code ist richtig" Das Verhalten ist falsch, also sollte der Code falsch sein. Glauben Sie so etwas nicht .. – MikeCAT

+2

Sollte der Button nicht irgendwo "hinzugefügt" werden, damit er angezeigt wird? – MikeCAT

+3

Sie fügen 'btn' nicht hinzu .right? Fügen Sie es hinzu ' HBox topHBox = neue HBox (15.0, tomatoButton, pepperButton, pilzButton, pizzaType, btn); ' –

Antwort

0

Vereinbaren Sie mit Fast-Schnecke, müssen Sie die Schaltfläche, um Ihre HBox zu geben, um es in der HBox zu erscheinen. Ihnen alle Tasten getrennt mit dem von Ihnen angegebenen Abstand geben.

0

Sie müssen die Schaltfläche zu Ihrer HBox hinzufügen, wenn Sie möchten, dass sie in HBox angezeigt wird.

Verwandte Themen