使用RadioButton更改TextField显示

时间:2017-03-21 21:14:47

标签: java javafx dynamic gridpane

我在网格窗格中放置Label和TextField时出现问题,以响应切换的RadioButtons。

窗口将显示相同的选项,但两个不同的标签和文本字段除外,这取决于用户选择的RadioButton。(参见附图)。

InHouse RB Selected Outsourced RB Selected

我将RadioButton对象添加到Toggle组,然后对“on actions”进行编码,以便在选择其中一个选项时根据需要将“Machine ID”或“Company Name”字段添加到GridPane。

我的问题是我只能选择每个选项一次,第二个选项的显示只与第一个实例重叠而不是替换它。如果我再次尝试切换回来,我会遇到一个关于向网格添加两次相同对象的运行时错误(在Netbeans中)。

我尝试过的任何可以从显示中删除节点的代码都不会影响菜单的行为。

    ArrayList<Label> typeSpecLabels = new ArrayList<Label>();
    ArrayList<TextField>typeSpecFields = new ArrayList<TextField>();

    typeSpecLabels.add(machineIDLabel);
    typeSpecLabels.add(companyLabel);

    typeSpecFields.add(machineIDField);
    typeSpecFields.add(companyNameField);

    inHouseBtn.setOnAction(inHouseSpecificEvent ->
    { 
        typeSpecLabels.add(machineIDLabel);

        grid1.add(typeSpecLabels.get(0),0,8,1,1);
        grid1.add(typeSpecFields.get(0), 1,8,1,1);


        if(outSourceBtn.isArmed() == true){
            grid1.getChildren().remove(companyLabel);
            grid1.getChildren().remove(companyNameField);
        }
    });


    outSourceBtn.setOnAction(outSourceSpecificEvent ->
    {
        typeSpecLabels.add(companyLabel);
        grid1.add(companyLabel,0,8,1,1);
        grid1.add(companyNameField,1,8,1,1);

        if(outSourceBtn.isArmed() == true){
            grid1.getChildren().remove(machineIDLabel);
            grid1.getChildren().remove(machineIDField);
        }
    });

我听说我可以尝试使用2或3个不同的场景(RadioButtons的每个状态一个),所以我可以试试。但是,如果它可以按我迄今为止编码的方式完成,我宁愿这样做。

2 个答案:

答案 0 :(得分:0)

我建议从网格中删除所有类型特定标签和字段,然后添加您需要的标签和字段。所以代码如下所示:

<?php
$a=escapeshellarg('6');
//set $c [lindex $argv 0];
$answer = shell_exec("D:/WebPages/Test/PHP_Test.exe $a");
echo $answer;
?>

答案 1 :(得分:0)

正如Pavlo建议的那样,这段代码最终得到了解决。 虽然我只是删除了特定于反对事件的对象。 该代码无错误或重叠。

        inHouseBtn.setOnAction(inHouseSpecificEvent ->
    {

        grid1.add(machineIDLabel,0,8,1,1);
        grid1.add(machineIDField,1,8,1,1);

        grid1.getChildren().remove(companyLabel);
        grid1.getChildren().remove(companyNameField);
    });


    outSourceBtn.setOnAction(outSourceSpecificEvent ->
    {

        grid1.add(companyLabel,0,8,1,1);
        grid1.add(companyNameField,1,8,1,1);

        grid1.getChildren().remove(machineIDLabel);
        grid1.getChildren().remove(machineIDField);
    });