Java FXML TextArea.setText()停止工作

Java FXML TextArea.setText()停止工作,java,fxml,Java,Fxml,我试图更新Java FXML程序中的文本区域,但遇到了一个奇怪的问题。我可以更新指令2次,但在同一更新调用的第三个实例中,文本字段不会更新。我对所有更新都使用相同的方法调用,并且已经获得了应该在控制台中显示以打印的内容,因此我知道问题在于TextArea更新。以下是导致问题的代码: private void freedomCheck(){ // method for starting out a composition, choosing "mode" decisionIn

我试图更新Java FXML程序中的文本区域,但遇到了一个奇怪的问题。我可以更新指令2次,但在同一更新调用的第三个实例中,文本字段不会更新。我对所有更新都使用相同的方法调用,并且已经获得了应该在控制台中显示以打印的内容,因此我知道问题在于TextArea更新。以下是导致问题的代码:

private void freedomCheck(){        // method for starting out a composition, choosing "mode"
    decisionIndex = 0;
    this.addChord("I");                 //initialize first chord to "I"
    prompt[0] = "Please enter your degree of freedom: 1, 2, 3, or 4."; //display prompt
    prompt[1] = "1: Composes and plays for you";
    prompt[2] = "2: Fill in just notes with chords given to you";
    prompt[3] = "3: Fill in chords and notes, with software giving you options for both";
    prompt[4] = "4: Fill in chords and notes with full independence";
    prompt();                   // get user input (can be changed to button press, etc.

}

private void prompt(){
    String displayString = "";
    for(int i=0;i<5;i++){
        displayString += prompt[i] + "\n";
    }
    setInstructions(displayString);
    System.out.println(displayString);
}

    public void setInstructions(String newString){
    instruction_text.setText(newString);
}
private void freedomCheck(){//用于开始合成的方法,选择“模式”
决策指数=0;
this.addChord(“I”);//将第一个和弦初始化为“I”
提示[0]=“请输入您的自由度:1、2、3或4。”;//显示提示
提示[1]=“1:为您作曲和演奏”;
提示[2]=“2:仅用给你的和弦填写音符”;
提示[3]=“3:填写和弦和音符,软件为您提供两种选项”;
提示[4]=“4:填写完全独立的和弦和音符”;
prompt();//获取用户输入(可以更改为按按钮等。
}
私有void提示符(){
字符串displayString=“”;

对于(int i=0;i通过将其添加到setInstructions方法中,验证您每次实际上都在更新相同的文本区域:
System.out.println(System.identityHashCode(指令文本));
如果每次打印不同的值,则您没有更新屏幕上的同一文本区域。尝试添加时,文本的初始设置和唯一工作更新上显示相同的代码。非工作更新上也显示相同的代码。输出为:2133816938请输入您的自由度:1、2、3或4.1:为您作曲和演奏2:仅使用提供给您的和弦填写音符3:使用软件填写和弦和音符,为您提供两种选项4:完全独立地填写和弦和音符2133816938 2133816938当前和弦为I;请选择一个音符:2:C7 3:E7 4:G7 5:C8 2133816938抱歉格式不正确。还有,请选择clarify、 “1:…4:…”部分确实更新到文本区域,但“当前和弦是…”未更新。它们之间的更新成功触发了第二个数字,但未设置为将其文本输出到控制台。通过将此添加到setInstructions方法中,验证您每次都在更新相同的文本区域:
System.out.println(System.identityHashCode(指令文本));
如果每次打印不同的值,则您没有更新屏幕上的同一文本区域。尝试添加时,文本的初始设置和唯一工作更新上显示相同的代码。非工作更新上也显示相同的代码。输出为:2133816938请输入您的自由度:1、2、3或4.1:为您作曲和演奏2:仅使用提供给您的和弦填写音符3:使用软件填写和弦和音符,为您提供两种选项4:完全独立地填写和弦和音符2133816938 2133816938当前和弦为I;请选择一个音符:2:C7 3:E7 4:G7 5:C8 2133816938抱歉格式不正确。还有,请选择clarify、 “1:…4:…”部分已更新到文本区域,但“当前和弦是…”部分未更新。它们之间的更新成功,触发了第二个数字,但未设置为将其文本输出到控制台。
    public void promptNotes(){
    decisionIndex = 4;
    int index;
    if (composition.noteLength() == 0)
        index = composition.getSize() - 1;
    else index = composition.noteLength();
    prompt[0] = "The current chord is " + composition.getChord(index).getName() + "; please pick a note:";//prompt

    Chord temp = composition.getChord(composition.getSize()-1);
    ArrayList<Note> candidates = temp.getOfferedNotes();
    int notesLen = candidates.size();       //length of notes list for current chord

    for(int i = 1; i < 5; i++){
        tempNotes[i] = candidates.get(notesLen - i);
        prompt[i] = (i+1) + ": " + tempNotes[i].getName();
    }
    prompt();
}