现在,我已经环顾了一会儿,但我找不到任何可以帮助我的事情。我正在尝试创建一个基于聊天的游戏,它利用JavaFX-FXML并依赖于ScrollPane。
我正在尝试创建JLabel并动态地将它们添加到ScrollPane。
通过我自己的研究,我发现你不能为ScrollPane设置多个孩子;你必须使用setContent
方法并有一个窗格来添加其中的子项,所以这就是我所做的但是在添加标签时仍然会出错。它在IDE内部并且告诉我必须使用节点,但我不知道节点是什么。
这是我的控制器:
public class Controller() {
import javax.swing.*;
import javafx.fxml.FXML;
import javafx.scene.input.*;
import javafx.scene.layout.Pane;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import static jdk.nashorn.internal.objects.NativeError.printStackTrace;
private String msg;
private char[] msgA;
@FXML
private Label opt1;
@FXML
private Label opt2;
@FXML
private Label opt3;
@FXML
private TextField msgBox;
@FXML
private AnchorPane gameUI;
@FXML
private AnchorPane mainMenu;
@FXML public ScrollPane labelPane;
private boolean optionSelected = false;
private void startup(){
System.out.println("startup called! Getting player's name now..");
String mcName=JOptionPane.showInputDialog(null,"Please enter your name");
System.out.println(mcName+" was inputted, let's hope it's an appropriate name! Haha!");
JLabel label = new JLabel();
label.setName("evieHi");
label.setText("Hi "+mcName+"! How are you doing?");
labelPane.setContent(p);
opt1.setText("I'm good, how are you?");
opt2.setText("Not so well until you texted. ;D");
opt3.setText("I'm sorry, who is this?");
Pane p = new Pane();
p.getChildren().add(label);
}
}
我确实知道一些导入和变量是多余的。它们与我的问题无关,所以我从我的代码中删除了使用它们的方法。
提前致谢,对不起,您必须阅读我的杂乱代码。
答案 0 :(得分:0)
尝试创建Swing UI组件并不是JavaFX的好兆头...... 我在@James_D和@fabian的帮助下解决了这个问题,指出了我愚蠢的想法......
private void startup(){
System.out.println("startup called! Getting player's name now..");
mcName=JOptionPane.showInputDialog(null,"Please enter your name");
System.out.println(mcName+" was inputted,let's hope it's an appropriate name! Haha!");
Label label = new Label();
label.setText("Hi "+mcName+"! How are you doing?");
p.getChildren().add(label);
labelPane.setContent(p);
}