Ярлыки не отображаются в графическом интерфейсе (может быть, из-за фонового изображения?)

Я пытался создать чат уже неделю или около того, цель состоит в том, чтобы чат превратился в анимированный чат, содержащий фигуры и фоновые комнаты. до сих пор я создал графический интерфейс с фоном и теперь пришел к тому, что я хочу добавить своих персонажей, если кто-то подключится. Графический интерфейс создается в JavaFx Scenebuilder, а таблица стилей создается в CSS.

Идея заключается в том, что когда кто-то подключается к серверу, ему предоставляется человек в чате, а затем случайное место на экране, чтобы стоять (позже реализовать движение :)), но моя проблема в том, что когда я пытаюсь создать метку с прикрепленным изображением графический интерфейс, похоже, не отображает изображение (как показано в примере изображения ниже), мой код выглядит следующим образом:

        Label test = new Label();
    test.setStyle("build.css");
    test.setText("Here i am");
    test.setVisible(true);

    Image img = new Image(getClass().getResourceAsStream("Figur.png"));
    Label test2 = new Label("", new ImageView(img));
    test2.setLayoutX(50);
    test2.setLayoutY(30);
    test2.setVisible(true);

приведенный выше код - это 2 попытки создать метки, и графический интерфейс по-прежнему их не показывает. Моя текущая мысль заключается в том, что метки прячутся за фоновым изображением графического интерфейса, потому что я просто добавил изображение через CSS (со следующим кодом):

#AnchorPane{-fx-background-image:url('Background.JPG');}

Может ли кто-нибудь помочь мне и подсказать, как я могу сделать так, чтобы мои метки отображались внутри изображения и были видны? :)

Заранее спасибо!

Изображение моей программы


person Marc Rasmussen    schedule 07.10.2012    source источник
comment
Кто увидит в чем проблема?   -  person Marc Rasmussen    schedule 08.10.2012


Ответы (1)


Ваша 1-я попытка неверна в строке

test.setStyle("build.css");

Загрузите таблицы стилей CSS, как показано ниже.

scene.getStylesheets().add(getClass().getResource("build.css").toExternalForm());

и примените селектор пользовательского идентификатора, определенный в загруженном css, к тестовой метке как

test.setId("myTestId");

Ваша вторая попытка верна. Покажите, как вы добавляете эти метки на сцену.
ОБНОВЛЕНИЕ. Чтобы динамически добавлять метки, выполните следующие действия.
В классе контроллера файла FXML свяжите панель привязки и добавьте метки. к нему:

@FXML private AnchorPane anchorPane; // where fx:id = anchorPane
anchorPane.getChildren().addAll(test, test2);
person Uluk Biy    schedule 08.10.2012
comment
Проблема в том, что я не добавляю метки к сцене самостоятельно: до сих пор я использовал только конструктор графического интерфейса для создания своих меток. но, учитывая, что мне нужно создать x меток в зависимости от того, сколько из них находится в сети, мне нужно знать, как добавить их в мою AnchorPane :)? - person Marc Rasmussen; 08.10.2012
comment
Спасибо, а куда он их добавляет? мне нужно установить свои собственные координаты x и y, чтобы добавить их в определенную точку на экране? (я думаю, я должен) - person Marc Rasmussen; 08.10.2012
comment
К сожалению, я до сих пор не могу увидеть этикетку :S - person Marc Rasmussen; 10.10.2012