Aktywne Wpisy
![nevin](https://wykop.pl/cdn/c0834752/ae69d25500df066bda30ecae504ca3e0a999c1db940d15dc036a51867ab27356,q60.png)
nevin +59
Dlaczego prawactwo ma problem z miastami 15 minutowymi? Nie potrafię sobie wyobrazić argumentacji, która by krytykowała taki pomysł. Przecież takie miasto to same zalety. O #!$%@? im chodzi?
#neuropa #bekazprawakow #bekazpodludzi #bekazkonfederacji #polityka #ekologia
#neuropa #bekazprawakow #bekazpodludzi #bekazkonfederacji #polityka #ekologia
![SEGATASANSHIRO](https://wykop.pl/cdn/c0834752/d7f58bb0152c5bb9cb480e49b2d88b84178b7e6e34760d4d7b4c5b0a0c3e74d9,q60.png)
SEGATASANSHIRO +69
Dzieciątko z lasu, was tak kiedyś ogrzewała jakaś kobieta? #przegryw #bekazlewactwa
![SEGATASANSHIRO - Dzieciątko z lasu, was tak kiedyś ogrzewała jakaś kobieta? #przegryw...](https://wykop.pl/cdn/c3201142/f3c120f527ed2185435dd03ed2074d967dbe446fb45c9a391bd4a12027f60d2c,w150.jpg?author=SEGATASANSHIRO&auth=295e29736e7dae7b77ed96804caabfd3)
1. Mam glowna klase Main, ktora uruchamia glowne okno aplikacji (BorderPane). W glownym BorderPane jest za includowany VBox z logowaniem.
- kod java: https://pastebin.com/u1C8pQ4f
- fxml mainBorder: https://pastebin.com/ZJntShnZ
- zaincludowany fxml logowania: https://pastebin.com/pK7ubaeE
2. Ten FXML ma kontroler - 'MainController'.
- kod java: https://pastebin.com/1LdK9pvp
3. No i nie mam pojecia jak przekazac referencje tego MainControllera (jest tam metoda odpowiedzialna za wylaczneie VBox okna logowania) do kontrolera odpowiedzialnego z logike logowania. Gdy w LoginController uzykownik wpisze poprawne haslo wtedy chcialbym po prostu wywolac mainController.disabledLogin() i chcialbym, zeby zniknal VBox logowania. Cudowalem juz na kazdy sposob. Albo mam nulle, albo dostaje kompletnie nowy objekt MainController i wtedy ta metoda nie usuwa VBox logowania.
Ma ktos jakas recepte jak przekazac dokladnie ten obiekt MainController do LoginController i dzieki czemu moglbym normalnie usunac VBox logowania za pomoca metody z MainControllera?
Bardzo prosil o wszelkie rady, bo siedze juz nad tym problemem dlugo i moze w ogole moja archtektura kodu jest do bani.
#java #javafx #naukaprogramowania
w MainController jest:
@FXML
private LoginController loginWindowController;
@FXML
public void initialize() {
System.out.println(this); //printuje, zeby sprawdzic jaki to jest obiekt
loginWindowController.setMainController(this);
}`
Includuje jeden z komponentow (okno logowania) w ten sposob.
w fxml jest:
Wydaje sie, ze wszystko powinno byc ok.
Potem w w LoginController chce wywolac ta referencja, ktora przekazlem i wyskakuje NULL, wiec nie mam dostepu do metody z MainController.
Output:
controllers.MainController@55ef2a78 //ten print z initialize();
haslo do logowania: 1233
Ogolnie nie patrz na clean code/UI, bo tam sporo do poprawy, ale przez ten problem przerabialem to juz 39473 razy i skupilem sie glownie, zeby znalezc ten problem.
Chodzi o to, zeby w LoginController w metodzie public void correctLogin(ActionEvent actionEvent) po poprawnym zalogowaniu mozna bylo wywlowac za pomoc mainController metode disabledLogin(), zeby to okno zniknelo.
FXMLLoader fxmlLoader = new FXMLLoader(...);
Parent root = fxmlLoader.load();
((LoginController)fxmlLoader.getController()).setMainController(this);
1. W MainBorderPane.fxml do Pane dodajesz fx:id="pane"
2. W MainController dodajesz
@FXML
private Pane pane;
3. Oraz zmieniasz
public void disabledLogin(){
borderPane.getChildren().remove(pane);
}
4. W LoginController zmieniasz metodę
public void confrmButton(ActionEvent actionEvent)
...
if(CORRECT_PASSWORD.equals(password)){
mainController.disabledLogin();
} else{
...
W razie pytań pisz śmiało
Zakrecilem sie przy tym jak nie powiem co. Ciezko bylo mi to wylapac i teraz bede to analizowal dlaczego to dziala tak,a nie inaczej. Troche to dla mnie nielogiczne, ze raz ta referencja jest przekazana, a raz jest nullem. Dlaczego jak wrzuce mainController.disabledLogin() do metody 'public void confrmButton(ActionEvent actionEvent)' to wtedy