2017-03-05 92 views
0

我是Javafx的新手,我試圖讓一個按鈕顯示我在arrayList中存儲的字符串。代碼工作正常,但只顯示一次,無論多少次點擊它永遠不會改變。使按鈕顯示標籤中的不同文本Javafx

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> 

回答

-1

我想通了,我的方法是缺少一個行動事件。

public void btnClick(ActionEvent event);

+0

這沒有什麼區別 –

+0

它對我很有效,它是我添加的唯一東西。 – Noppy

0

它應該是

count += 1; 

或類似的代替

count=+1; 

東西這相當於

count=1; 

即它總是分配相同的值,以count這意味着索引閱讀始終是相同的,因此文字永遠不會改變...

注意,與4開始點擊事件處理程序將啓動造成IndexOutOfBoundsException小號...


此外,如果您從列表中讀取元素之前增加值,你會與第二啓動而不是第一個元素。您可能希望交換的語句:

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

另外,FXML內``部分是指文件不是格式良好的XML文件,因此必須以正確解析該文件被刪除..