我是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>
答案 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);