使按钮在标签Javafx中显示不同的文本

时间:2017-03-05 10:06:51

标签: java javafx javafx-8 fxml

我是Javafx的新手,我试图让单个按钮在arrayList中显示我存储的字符串。代码工作正常,但只显示一次,无论点击多少次都不会改变。

import java.net.URL;
import java.util.ArrayList;
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;

public class FXMLDocumentController  {
    public Label lblNext;
    public Button btnNext;
    int count = 0;

    public void btnClick(){
        ArrayList<String> words = new ArrayList<String>();
        words.add("one");
        words.add("two");
        words.add("three");
        words.add("four");
        count=+1;
        lblNext.setText(""+words.get(count));   
    }
}      

以下是FXML代码。

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="321.0" prefWidth="412.0"  xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="memorizer.FXMLDocumentController">
    <children>

        <Label fx:id="lblNext" alignment="CENTER" layoutX="13.0" ``layoutY="10.0"         minHeight="16" minWidth="69" prefHeight="244.0" prefWidth="386.0" text="Click     Next To Begin" />

        <Button fx:id="btnNext" layoutX="150.0" layoutY="265.0" mnemonicParsing="true" onAction="#btnClick" prefHeight="42.0" prefWidth="113.0" text="Next" />
    </children>
</AnchorPane>

2 个答案:

答案 0 :(得分:0)

应该是

count += 1;

或类似的东西而不是

count=+1;

相当于

count=1;

即。它总是为count指定相同的值,这意味着读取的索引总是相同的,因此文本永远不会改变...

请注意,从第4次点击开始,事件处理程序将开始导致IndexOutOfBoundsException s ...

此外,如果在从列表中读取元素之前递增值,则将从第二个元素开始,而不是从第一个元素开始。您可能想要交换语句:

lblNext.setText(words.get(count));
count++; // shortened version of count+=1;

fxml中的``部分也意味着该文件不是格式正确的xml文件,因此必须将其删除才能正确解析文件...

答案 1 :(得分:-1)

我想通了,我的方法错过了一个动作事件。

public void btnClick(ActionEvent event);