我有两个类Highscore和HighscoreEinzelspieler。 Highscore是超类,其中一些像视图一样的逻辑发生:
public VBox getDisplayHighscore(ArrayList<Spieler> spielerListe) {
VBox output = new VBox();
output.setAlignment(Pos.CENTER);
HBox headerRow = new HBox();
Iterator<Spieler> iterator = spielerListe.iterator();
for (int i = 0; iterator.hasNext(); i++) {
Spieler tmpPlayer = iterator.next();
HBox tmpRow = new HBox();
tmpRow.setAlignment(Pos.CENTER);
tmpRow.getStyleClass().add("tableRow");
tmpRow.setId("tableRowId" + i); //um spaeter die neue Position oder den Gewinner zu markieren
Label tmpName = new Label(tmpPlayer.getName());
tmpName.getStyleClass().add("tableName");
Label tmpVersuche = new Label("" + tmpPlayer.getVersuche());
tmpVersuche.getStyleClass().add("tableVersuche");
Label tmpTimer = new Label("" + tmpPlayer.getTimer());
tmpTimer.getStyleClass().add("tableTimer");
Label tmpPaare = new Label("" + tmpPlayer.getPaare());
tmpPaare.getStyleClass().add("tablePaare");
tmpRow.getChildren().addAll(tmpName, tmpVersuche, tmpTimer, tmpPaare);
output.getChildren().addAll(tmpRow);
}
output.getStyleClass().add("table");
return output;
}
现在我需要在我的子类HinghscoreEinzelspieler中使用此函数(注释不起作用的部分):
public HighscoreEinzelspieler() throws IOException, NamenFehler, AlterFehler {
// Liste auslesen
ArrayList<Spieler> spielerListe = getHighscore();
spielerListe.sort(new SpielerComparatorEinzel());
playerDisplay = super.getDisplayHighscore(spielerListe);
playerDisplay.getStyleClass().add("table");
//Node highlight = Masterklasse.primaryScene.lookup("#tableRowId1");
//System.out.println(highlight);
//highlight.getStyleClass().remove("tableRow");
//highlight.getStyleClass().add("tableRowWinner");
// mittig einbinden
Masterklasse.centerBox.getChildren().addAll(playerDisplay);
}
现在我想从我创建的getDisplayHighscore中找到一行。 为此,我尝试使用函数lookup(“#tableRowId”+ i)从静态场景中获取带有ID的行。但我总是得到一个“无”,我在超级课程中尝试过:
output.lookup("tableRowId1")
它有效。所以我认为静态场景就是问题所在。
谢谢, 卢卡:)
答案 0 :(得分:1)
我不知道Masterklasse.primaryScene
是什么,但这应该有效:
playerDisplay.lookup("#tableRowId1");
如果Masterklasse.primaryScene
指向您的output
,则需要使用getDisplayHighscore()
方法进行分配:
Masterklasse.primaryScene = output;
答案 1 :(得分:0)
对不起我迟到的回答,我现在修好了。这是代码位置的东西,我必须稍后调用这个方法。但我不知道它为什么现在正在工作。我无法解释。