2016-09-25 4 views
1

私のJavaプロジェクトの1つとして、現金登録を行うためにJavaFXを使用しています。 はGUIに示すように、プログラムはユーザがいくら払った、買った多くのアイテムを見つけるために、ユーザーの入力を要求します click here.JavaFXコンテナクラスを実行した直後にGUIの要素をどのように非表示にしますか?

、GUIの絵をしてください表示するには、およびで必要な変更を表示します。ラベル。しかし、ある時点でこのUIの特定の要素を隠したいと思います。現在、私はこれらのコマンドを使用して、ラベルとボタンを非表示にする方法を知っている:

label.setVisible(false); 
button.setVisible(false); 

はしかし、私はここに必要なものをラベルの下のすべての要素が、私はそうGUIControllerクラスを実行したときに目に見えない権利を開始+ 7.00% Sales Tax言っていることですこれらの変更を行うために追加のボタンをクリックする必要はありません。だから皆さんには何か提案がありますか?どんな助けもありがとう!

CashRegister(メインクラスが含まれています)

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

(私は私のプロジェクトに浮気していますように、私は見ていないように私はすべての "実際" のコードを省略されている)

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) { 
    }  

} 

登録GUI

<?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> 
+2

fxmlを使用している場合は、「visible」の値をfalseに設定します。また、別の写真サイトを使用できますか? imgurのように? –

+0

リンクで画像を共有していません。誰かが最初にあなたからのアクセスを要求することなく誰かがそれを見ることができるようにここにリンクを投稿すると、あなたはリンクで共有する必要があります – Vampire

+0

どのコンテナクラスを使用していますか? – donkon

答えて

1

実際には、GUIが完全に設定された後にのみ実行されるinitializeメソッドに必要なコードを置くことができます。つまり、コンストラクタのように動作しますが、このコード部分が実行されるまでにGUIが既に存在するため、nullPointerErrorはスローされません。

たとえば、あなたはあなたのRegisterGUIControllerでこれを行うことができます:

@Override 
    public void initialize(URL url, ResourceBundle rb) { 
     lblTax.setVisible(false); 
     lblLine.setVisible(false); 
     lblTotalText.setVisible(false); 
     lblTotal.setVisible(false); 
     lblChangeText.setVisible(false); 
     lblChange.setVisible(false); 
     inputPayment.setVisible(false); 
    } 

幸運をあなたのプロジェクトに!

+2

非表示にしたい各ノードのfxmlファイルに' visible = "false" 'を追加することもできます。 –

関連する問題