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