For one of my Java Projects, I am using JavaFX in order to make a cash register. To see the picture of the GUI, please click here.
As shown in the GUI, the program will ask for user input to find many items the user bought, how much the user paid, and will display the necessary change in a label. However, I would like to hide certain elements of this UI at certain points. Currently, I know how to hide labels and buttons using these commands:
label.setVisible(false);
button.setVisible(false);
However, what I need here is to have all of the elements below the label saying + 7.00% Sales Tax
start out invisible right when I run the GUIController Class so that I don't have to click any additional buttons in order to make these changes. So, do you guys have any suggestions? Any help is appreciated!
CashRegister (Contains main class)
package cashregister;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author Sammy
*/
public class CashRegister extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("RegisterGUI.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
RegisterGUIController
(I have ommitted all "actual" code so that I do not look like I am cheating on my project)
package cashregister;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
/**
*
* @author Sammy
*/
public class RegisterGUIController implements Initializable {
@FXML
private Label title, lblSubtotal, lblTax, lblLine, lblTotalText, lblTotal,lblChangeText, lblChange;
@FXML
private Button handleNoodle, handlePizza, handleWing, handlePie, handleIce;
@FXML
private TextField inputNoodle, inputPizza, inputWings, inputPies, inputIce, inputPayment;
@FXML
private void handleNoodle(ActionEvent event) {
}
@FXML
private void handlePizza(ActionEvent event) {
}
@FXML
private void handleWing(ActionEvent event) {
}
@FXML
private void handlePie(ActionEvent event) {
}
@FXML
private void handleIce(ActionEvent event) {
}
@Override
public void initialize(URL url, ResourceBundle rb) {
}
}
RegisterGUI
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="415.0" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="cashregister.RegisterGUIController">
<children>
<Button fx:id="handlePizza" layoutX="27.0" layoutY="107.0" onAction="#handlePizza" text="Pizza" AnchorPane.topAnchor="110.0" />
<Label fx:id="title" layoutX="118.0" layoutY="14.0" minHeight="16" minWidth="69" text="Cash Register" textAlignment="CENTER" AnchorPane.rightAnchor="118.0">
<font>
<Font name="System Bold" size="14.0" />
</font></Label>
<Label layoutX="39.0" layoutY="40.0" text="Please select the items you would like to buy" />
<Button fx:id="handlePie" layoutX="27.0" layoutY="169.0" mnemonicParsing="false" onAction="#handlePie" text="Blueberry Pie" AnchorPane.topAnchor="180.0" />
<Button fx:id="handleWing" layoutX="27.0" layoutY="138.0" mnemonicParsing="false" onAction="#handleWings" text="Chicken Wings" AnchorPane.topAnchor="145.0" />
<Button fx:id="handleNoodle" layoutX="27.0" layoutY="75.0" mnemonicParsing="false" onAction="#handleNoodles" text="Noodles" AnchorPane.topAnchor="75.0" />
<Button fx:id="handleIce" layoutX="28.0" layoutY="199.0" mnemonicParsing="false" onAction="#handleIce" text="Ice Cream" AnchorPane.topAnchor="215.0" />
<Label fx:id="lblLine" layoutX="21.0" layoutY="308.0" text="_______________________________________________________" AnchorPane.bottomAnchor="95.0" />
<Label layoutX="57.0" layoutY="210.0" text="Subtotal:" underline="true" AnchorPane.bottomAnchor="121.0" AnchorPane.leftAnchor="57.0">
<font>
<Font size="12.5" />
</font>
</Label>
<TextField fx:id="inputPayment" layoutX="143.0" layoutY="282.0" promptText="Enter Your Payment Here" AnchorPane.bottomAnchor="43.0" />
<Label fx:id="lblubtotal" layoutX="113.0" layoutY="210.0" text="\$0.00" AnchorPane.bottomAnchor="121.0" AnchorPane.leftAnchor="113.0">
<font>
<Font size="12.5" />
</font>
</Label>
<Label fx:id="lblTax" layoutX="48.0" layoutY="303.0" text="+ 7.00% Sales Tax" AnchorPane.bottomAnchor="98.0">
<font>
<Font size="12.5" />
</font>
</Label>
<Label fx:id="lblTotalText" layoutX="14.0" layoutY="272.0" text="Total:" underline="true" AnchorPane.bottomAnchor="60.0">
<font>
<Font size="14.0" />
</font>
</Label>
<Label fx:id="lblTotal" layoutX="57.0" layoutY="272.0" text="\$0.00" AnchorPane.bottomAnchor="60.0">
<font>
<Font size="14.0" />
</font>
</Label>
<Button fx:id="handleDone" layoutX="177.0" layoutY="272.0" mnemonicParsing="false" onAction="#handleButton" text="Done Shopping" AnchorPane.bottomAnchor="118.0">
<effect>
<DropShadow blurType="GAUSSIAN" spread="0.1" />
</effect>
</Button>
<Label fx:id="lblChangeText" layoutX="38.0" layoutY="295.0" text="Your Change:" AnchorPane.bottomAnchor="36.0">
<font>
<Font size="13.0" />
</font>
</Label>
<Label fx:id="lblChange" layoutX="127.0" layoutY="296.0" text="\$0.00" AnchorPane.bottomAnchor="36.0" />
<TextField fx:id="inputNoodles" layoutX="143.0" layoutY="75.0" onAction="#inputNoodles" promptText="# of Bowls" />
<TextField fx:id="inputPizza" layoutX="143.0" layoutY="110.0" onAction="#inputPizza" promptText="# of Boxes" />
<TextField fx:id="inputWings" layoutX="143.0" layoutY="145.0" onAction="#inputWings" promptText="# of Plates" />
<TextField fx:id="inputPies" layoutX="143.0" layoutY="180.0" onAction="#inputPies" promptText="# of Pies" />
<TextField fx:id="inputIce" layoutX="143.0" layoutY="215.0" promptText="# of Containers" />
</children>
</AnchorPane>