BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> JavaFX - за начинаещи!
ivan_g_popov
Публикувано на: 01-03-2018, 10:29
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 16.02.18



Здравейте, с молба да не ме съдите пускам тема с надежда за помощ и разяснение относно два въпроса свързани с JavaFX(и SceneBilder).
Първият въпрос е следният: генерирайки FX в IntelliJ се създава един .fxml фаил с контролер и мейн, когато му добавя .fxml си създавам контролер, това правилно ли е или не е това метода за добавчне на сцени?
Втория въпрос е: как от първия .fxml да премина на втория чрез бутон?Какъв е кода, защото ако само създам нова сцена я отваря но когато тръгна да и посочвам път към създаденият от мен .fxml нещата се чупят?

Благодаря предварително за съдействието?
PMEmail Poster
Top
thrawn
Публикувано на: 01-03-2018, 11:21
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1653
Регистриран на: 17.01.17



Да, "правилната" последователност е да създадеш контролер и да си направиш fxml с описание на изгледът.

За останалата част от въпроса е хубаво да си изясниш как работят нещата. "Преходи" между fxml файлове не се правят. Fxml файловете се ползват само за да се генерира от тях някакъв Node (и евентуално контролер). След като веднъж имаш създаден Node можеш да го правиш каквото искаш (например да го поставиш в сцена).

Та за да покажеш друг изглед в следствие на натиснат бутон трябва да парснеш fxml файлът описващ новия изглед (като регистрираш съответния observer за onAction). След това можеш да отвориш нов stage в който да го поставиш или директно да го покажеш в текущия stage.
PMEmail Poster
Top
ivan_g_popov
Публикувано на: 01-03-2018, 11:45
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 16.02.18



Мерси за отговора. Ако не е много нахално може ли някоя статия или примерен код за ориентир.Това което аз намирам е или логин форма или директво се пише сцената(като код) и малко ме обарква.
PMEmail Poster
Top
thrawn
Публикувано на: 01-03-2018, 11:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1653
Регистриран на: 17.01.17



Ми то едва ли има статии за нещо толкова базово.
По-добре покажи твой код за да видим какво бъркаш
PMEmail Poster
Top
ivan_g_popov
Публикувано на: 01-03-2018, 12:59
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 16.02.18



Това ми е кода, така закоментирани тедовете отваря нова сцена но с пътя се чупи. pastebin.com/J7ucMtL0

На снимката за съжаление не се вижда ясно, но кодът е написан в контролера на първият(дефолтен) fxml кото действие на бутона му.
Вторият fxml е в отделен пакет с своя контролер(за по пеглено, незнам дали е правилно).

Това мнение е било редактирано от ivan_g_popov на 01-03-2018, 13:09

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка
PMEmail Poster
Top
thrawn
Публикувано на: 01-03-2018, 13:08
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1653
Регистриран на: 17.01.17



Е на това мисли ли, че може да се види нещо?

Тук не е дестка градина за да ни показваш картинки. Кодът е текст - копирай го и го пейстни тук, като ползваш CODE тагът за да запазиш форматирането.
PMEmail Poster
Top
ivan_g_popov
Публикувано на: 01-03-2018, 13:11
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 16.02.18



Посочил съм го но неправилно за което се извинявам.pastebin
PMEmail Poster
Top
thrawn
Публикувано на: 01-03-2018, 13:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1653
Регистриран на: 17.01.17



generateProtokol кой го вика? Ако си го описал в fxml ът, си изтървал @FXML анотацията.
PMEmail Poster
Top
ivan_g_popov
Публикувано на: 01-03-2018, 13:35
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 17
Регистриран на: 16.02.18



Mетода е създаден като onAction на бутона, описам в fxml-a.
PMEmail Poster
Top
thrawn
Публикувано на: 01-03-2018, 14:22
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1653
Регистриран на: 17.01.17



Давай всички сорсове в темата и пълните съобщения за грешка.

Ето ти пример с генериран проект от intellij. В този код няма никаква промяна. Така си е генериран
CODE
public class Main extends Application {

   @Override
   public void start(Stage primaryStage) throws Exception{
       Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
       primaryStage.setTitle("Hello World");
       primaryStage.setScene(new Scene(root, 300, 275));
       primaryStage.show();
   }


   public static void main(String[] args) {
       launch(args);
   }
}



sample.fxml съдържа само един бутон и описание на контролер
CODE
<GridPane fx:controller="sample.Controller" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
   <Button text="New Stage" onAction="#openNewStage" />
</GridPane>


Това е самия контролер, които декларира само един метод openNewStage с който се отваря нов изглед, деклариран в new_stage.fxml
CODE
public class Controller {

   public void openNewStage(ActionEvent event) {
       try {
           FXMLLoader loader = new FXMLLoader(getClass().getResource("new_stage.fxml"));

           Stage stage = new Stage();
           stage.setTitle("New Stage");
           stage.setScene(new Scene((Parent) loader.load()));
           stage.show();
       }
       catch (IOException e) {
           e.printStackTrace();
       }
   }
}


И описанието на новия изглед
CODE
<AnchorPane xmlns="http://javafx.com/javafx" prefHeight="400.0" prefWidth="600.0">
   <Label text="New Stage" />
</AnchorPane>

PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0