如何将子项添加到ScrollPane

时间:2018-02-15 03:35:22

标签: javafx nodes fxml

现在,我已经环顾了一会儿,但我找不到任何可以帮助我的事情。我正在尝试创建一个基于聊天的游戏,它利用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);
    }

}

我确实知道一些导入和变量是多余的。它们与我的问题无关,所以我从我的代码中删除了使用它们的方法。

提前致谢,对不起,您必须阅读我的杂乱代码。

1 个答案:

答案 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);
}