2013-11-21 4 views
1

Это было домашнее задание, которое у меня было ранее. Как и я, я сделал все, что мог, и повернулся в том, что у меня было, и что получил оценку. Мое задание состояло в том, чтобы создать графический интерфейс, который позволил бы вам выбрать, какой тип транспортного средства у вас был (компактный, средний, роскошный, suv), поскольку он определял размер вашего газового бака, какой тип газа вы хотели использовать (супер неэтилированный, неэтилированный, свинцовый, дизельный), поскольку это определяло цену за галлон и расстояние, которое вы хотели путешествовать. Затем он подсчитал, сколько это будет стоить. У меня есть алгоритм для вычисления всего этого, но мой класс учил Swing, который не имеет для меня никакого смысла, и я решил попробовать переделать это с помощью JavaFX. Моя проблема в том, что я не могу заставить проект компилироваться, поскольку есть проблема с конструктором, и я не знаю, как его получить, поэтому он использует метод calculate() при нажатии кнопки расчета. Я не очень беспокоился о макете программы на данный момент, потому что я не вижу этого. Я позабочусь об этом позже. Любой, кто может мне помочь? Как я уже сказал, это было старое домашнее задание, которое уже было оценено, я просто хотел попробовать javaFx вместо Swing.Javafx не отображается

import javafx.collections.FXCollections; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.geometry.Insets; 
import javafx.scene.control.*; 
import javafx.scene.layout.*; 
import javafx.scene.text.*; 

/** 
* Created with IntelliJ IDEA. 
* User: Zane Erickson 
* Date: 11/16/13 
* Time: 8:27 PM 
* Purpose: Be able to enter estimated miles to drive, gas type, and car type into the GUI to get an estimated cost for travel. 
*/ 

public class TGC extends ButtonBase { 

    private boolean clearText; 

    private double totalCost; 

    private final double SUPERUNLEADED = 3.00; 
    private final double UNLEADED = 2.90; 
    private final double LEADED = 2.50; 
    private final double DIESEL = 4.00; 
    private final double OILCHANGEPRICE = 30.00; 

    private final int COMPACT = 13; 
    private final int MIDSIZE = 18; 
    private final int LUXURY = 15; 
    private final int SUV = 23; 
    private final int OILCHANGEDISTANCE = 3000; 
    private final int MPG = 15; 

    public TGC() 
    { 
     BorderPane border = new BorderPane(); 
     HBox hTitle = addHBox(); 
     border.setTop(hTitle); 
     border.setLeft(addVBox()); 

     border.setCenter(addGridPane()); 
     //border.setRight(addFlowPane()); 
    } 

    @Override 
    public void fire() { 
     calculate(); 
    } 

    public HBox addHBox() 
    { 
     HBox hTitle = new HBox(); 
     hTitle.setPadding(new Insets(15,12,15,12)); 
     hTitle.setSpacing(10); 
     hTitle.setStyle("-fx-background-color: #336699;"); 

     //Add buttons 
     Button buttonCalculate = new Button("Calculate"); 
      buttonCalculate.setPrefSize(100,20); 
     Button buttonReset = new Button("Reset"); 
      buttonReset.setPrefSize(100,20); 

     //Add the title 
     Text txtTitle = new Text("TGC"); 
     txtTitle.setFont(Font.font("Arial", FontWeight.BOLD, 20)); 

     //Add labels 
     Label lblEGasCost = new Label("Estimated Gas Cost: $"); 
     Label lblEOilCost = new Label("Estimated Oil Cost: $"); 
     Label lblETotalCost = new Label("Estimated Total Cost: $"); 

     //Add textFields 
     final TextField txfDistance = new TextField(); 

     //Set lblTitle to top of pane 
     hTitle.getChildren().addAll(txtTitle); 

     buttonCalculate.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent actionEvent) { 

       double oilTemp = (Integer.valueOf(txfDistance.getText()) % OILCHANGEDISTANCE) * OILCHANGEPRICE; 
       /* 
       if(== "Compact") 
       { 
        if(arg2 == "Super Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * COMPACT) * SUPERUNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * COMPACT) * UNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Leaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * COMPACT) * LEADED) + oilTemp; 
        } 
        else if (arg2 == "Diesel") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * COMPACT) * DIESEL) + oilTemp; 
        } 
        else 
        { 

        } 
       } 

       else if(arg == "Mid-Size") 
       { 
        if(arg2 == "Super Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * MIDSIZE) * SUPERUNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * MIDSIZE) * UNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Leaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * MIDSIZE) * LEADED) + oilTemp; 
        } 
        else if (arg2 == "Diesel") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * MIDSIZE) * DIESEL) + oilTemp; 
        } 
        else 
        { 

        } 
       } 

       else if(arg == "Luxury") 
       { 
        if(arg2 == "Super Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * LUXURY) * SUPERUNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * LUXURY) * UNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Leaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * LUXURY) * LEADED) + oilTemp; 
        } 
        else if (arg2 == "Diesel") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * LUXURY) * DIESEL) + oilTemp; 
        } 
        else 
        { 

        } 
       } 

       else if(arg == "SUV") 
       { 
        if(arg2 == "Super Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * SUV) * SUPERUNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Unleaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * SUV) * UNLEADED) + oilTemp; 
        } 
        else if(arg2 == "Leaded") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * SUV) * LEADED) + oilTemp; 
        } 
        else if (arg2 == "Diesel") 
        { 
         totalCost = ((Integer.valueOf(txfDistance.getText()))/(MPG * SUV) * DIESEL) + oilTemp; 
        } 
        else 
        { 

        } 
       } 
       else 
       { 

       } 
       totalPrice.setText((String.valueOf(totalCost))); 
       */ 
      } 

     }); 

     buttonReset.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent actionEvent) { 
       reset(); 
      } 
     }); 

     return hTitle; 
    } 

    public VBox addVBox() 
    { 
     VBox vbox = new VBox(); 
     vbox.setPadding(new Insets(10)); 
     vbox.setSpacing(8); 

     ChoiceBox chbCarType = new ChoiceBox(); 
      chbCarType.setItems(FXCollections.observableArrayList("Compact", "Mid-Size", "Luxury", "SUV")); 
      chbCarType.setTooltip(new Tooltip("Select Vechicle Type")); 
     ChoiceBox chbGasType = new ChoiceBox(); 
      chbGasType.setItems(FXCollections.observableArrayList("Super Unleaded", "Unleaded", "Leaded", "Diesel")); 
      chbGasType.setTooltip(new Tooltip("Select Fuel Type")); 

     vbox.getChildren().addAll(chbCarType, chbGasType); 

     return vbox; 
    } 

    public GridPane addGridPane() 
    { 
     GridPane grid = new GridPane(); 
     grid.setHgap(10); 
     grid.setVgap(10); 
     grid.setPadding(new Insets(0,10,0,10)); 

     return grid; 
    } 

    public void calculate() 
    { 

     //code is currently in buttonCalculate.setOnAction() 
    } 

    public void reset() 
    { 
     clearText = true; 
    } 
} 


/////////////////////////End of Class//////////////////////////// 

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 

public class Main extends Application { 

    public static void main(String[] args) 
    { 
     SplashScreen.createSplashScreen(); //call createSplashScreen in the SplashScreen class 
     launch(args); 
    } 

    @Override 
    public void start(Stage stage) throws Exception { 
     stage.setTitle("TGC"); 
     TGC f = new TGC(); //not sure how to use f so that I call TGC properly 
     Group root = new Group(); 
     Scene scene = new Scene(root, 800, 600, Color.BLACK); 
     stage.setScene(scene); 
     stage.show(); 
    } 
} 
+1

JavaFX обеспечивает FXML, которые являются дизайном для управления и использовать его ... Вы можете использовать контроллер файл его легко добросовестный ... попробуйте http://stackoverflow.com/questions/19523341/adding-a-tilepane-instantiated-in-java-files-to-fxml –

+0

Какая строка не компилируется и что такое сообщение об ошибке? –

ответ

0

Удалите BorderPane и все это из вашего класса TGC, поскольку этот класс расширяет ButtonBase. Вам нужно переместить некоторые из этих вещей вниз в ваш метод запуска ...

@Override 
    public void start(Stage stage) throws Exception { 
     stage.setTitle("TGC"); 
     BorderPane root = new BorderPane(); 
     hTitle = addHBox(); 
     border.setTop(hTitle); 
     border.setLeft(addVBox()); 

     border.setCenter(addGridPane()); 
     Scene scene = new Scene(root, 800, 600, Color.BLACK); 
     stage.setScene(scene); 
     stage.show(); 
    }