无法将一个 class 中的 char 数组发送到另一个 Java 中的可观察列表
Trouble sending a char array in one class to an observable list in another in Java
我是 Java 的新手,我正在尝试将一个 class 中生成的字符串/数组发送到另一个 class 以用于可观察列表。基本上我希望一个 class 中的字符串作为字符数组发送到另一个 class 到一个可观察列表,这样字母就可以在 GUI 中以类似图块的格式呈现。
这是我的第一个class:
public class Phrase {
String gamePhrase = "Keep moving forwards";
String guessPhrase = gamePhrase.replaceAll("[a-zA-Z0-9]", "*");
char[] array = guessPhrase.toCharArray();
}
这是我的第二个 class,我正在尝试将字符添加到:
private ObservableList<Node> phraseList;
private Phrase p1 = new Phrase();
private void start() {
phraseList.clear();
for (p1.toCharArray()) {
phraseList.add(new LetterBoxes(c));
}
}
private static class LetterBoxes extends StackPane {
private Rectangle bg = new Rectangle(40, 60);
private Text text;
public LetterBoxes(char x) {
bg.setFill(x == ' ' ? Color.DARKSEAGREEN : Color.WHITE);
bg.setStroke(Color.BLUE);
text = new Text(String.valueOf(x).toUpperCase());
text.setFont(DEFAULT_FONT);
text.setVisible(false);
setAlignment(Pos.CENTER);
getChildren().addAll(bg, text);
}
}
我不确定如何正确地获取数组并且很难继续。任何帮助都会很棒!
我觉得你是法国人不是吗? Ce tombe bien, moi aussi !
但是我猜确实有些不对劲:
for(p1.toCharArray())
我不知道你想做什么,但我认为它行不通。
所以首先,你必须在 class "phrase" 中私下传递你的变量,并构建一些 getters-setters:
public class Phrase {
private String gamePhrase = "Keep moving forwards";
private String guessPhrase = gamePhrase.replaceAll("[a-zA-Z0-9]", "*");
private char[] array = guessPhrase.toCharArray();
public void setGamePhrase(String s){
gamePhrase = s;
}
public void setGuessPhrase(String s){
guessPhrase = s;
}
public void setArray(Char[] s){
array = s;
}
public String getGamePhrase(){
return gamePhrase;
}
public String getGuessPhrase(){
return guessPhrase;
}
public char[] getArray(){
return array;
}
}
有了它,您将能够正确设置和获取数据。然后,在你的另一个class上,你可以
private Phrase p1 = new Phrase();
private void start() {
phraseList.clear();
for (int i=0; i<p1.getArray().size(); i++) { //Perhaps it's something else than .size(), but the idea is that you take the size of array
phraseList.add(new LetterBoxes(p1.getArray().get(i))); // Here is the same thing, perhaps it's not get(i), but the idea is that you take the value which is associate to the rank i in array.
}
}
public LetterBoxes(char x) {...}//don't change this function
希望对您有所帮助,
不要犹豫回答我
for (p1.toCharArray()) {
错误的原因有两个:
Phrase
class 没有提供 toCharArray
方法。
for
循环的语法错误。
您可能需要 getter 用于 Phase
class 中的数组并使用增强的 for
循环:
public class Phrase {
public char[] getArray() {
return array;
}
...
}
for (char c : p1.getArray()) {
我是 Java 的新手,我正在尝试将一个 class 中生成的字符串/数组发送到另一个 class 以用于可观察列表。基本上我希望一个 class 中的字符串作为字符数组发送到另一个 class 到一个可观察列表,这样字母就可以在 GUI 中以类似图块的格式呈现。
这是我的第一个class:
public class Phrase {
String gamePhrase = "Keep moving forwards";
String guessPhrase = gamePhrase.replaceAll("[a-zA-Z0-9]", "*");
char[] array = guessPhrase.toCharArray();
}
这是我的第二个 class,我正在尝试将字符添加到:
private ObservableList<Node> phraseList;
private Phrase p1 = new Phrase();
private void start() {
phraseList.clear();
for (p1.toCharArray()) {
phraseList.add(new LetterBoxes(c));
}
}
private static class LetterBoxes extends StackPane {
private Rectangle bg = new Rectangle(40, 60);
private Text text;
public LetterBoxes(char x) {
bg.setFill(x == ' ' ? Color.DARKSEAGREEN : Color.WHITE);
bg.setStroke(Color.BLUE);
text = new Text(String.valueOf(x).toUpperCase());
text.setFont(DEFAULT_FONT);
text.setVisible(false);
setAlignment(Pos.CENTER);
getChildren().addAll(bg, text);
}
}
我不确定如何正确地获取数组并且很难继续。任何帮助都会很棒!
我觉得你是法国人不是吗? Ce tombe bien, moi aussi ! 但是我猜确实有些不对劲:
for(p1.toCharArray())
我不知道你想做什么,但我认为它行不通。
所以首先,你必须在 class "phrase" 中私下传递你的变量,并构建一些 getters-setters:
public class Phrase {
private String gamePhrase = "Keep moving forwards";
private String guessPhrase = gamePhrase.replaceAll("[a-zA-Z0-9]", "*");
private char[] array = guessPhrase.toCharArray();
public void setGamePhrase(String s){
gamePhrase = s;
}
public void setGuessPhrase(String s){
guessPhrase = s;
}
public void setArray(Char[] s){
array = s;
}
public String getGamePhrase(){
return gamePhrase;
}
public String getGuessPhrase(){
return guessPhrase;
}
public char[] getArray(){
return array;
}
}
有了它,您将能够正确设置和获取数据。然后,在你的另一个class上,你可以
private Phrase p1 = new Phrase();
private void start() {
phraseList.clear();
for (int i=0; i<p1.getArray().size(); i++) { //Perhaps it's something else than .size(), but the idea is that you take the size of array
phraseList.add(new LetterBoxes(p1.getArray().get(i))); // Here is the same thing, perhaps it's not get(i), but the idea is that you take the value which is associate to the rank i in array.
}
}
public LetterBoxes(char x) {...}//don't change this function
希望对您有所帮助,
不要犹豫回答我
for (p1.toCharArray()) {
错误的原因有两个:
Phrase
class 没有提供toCharArray
方法。for
循环的语法错误。
您可能需要 getter 用于 Phase
class 中的数组并使用增强的 for
循环:
public class Phrase {
public char[] getArray() {
return array;
}
...
}
for (char c : p1.getArray()) {