JavaFx nowy widok

0

Witam

Mam nie lada problem. Może wynika on z faktu że dopiero zaczynam bawić sie JavaFx.
w Java Scene Builder stworzyłam nastepujace widoki (MainView, ControlPanelView i ControlPanel2View).
MainView zawiera 2 buttony i zalezy mi aby po kliknieciu na pierwszy pojawial się ControlPanelView zagnieżdzony w MainView. przy kliknieciu na drugi button pojawiał się ControlPanel2View.

W skrócie
Chodzi mi o to żeby przy kliknieciu na stronie głownej przycisku "aktualizował" sie jedynie czesc widoku, który jest powiazany z danym przyciskiem. Jezeli klikne przycisk "Zaloguj sie " pojawia mi sie widok z formularzem do logowania, jezeli zarejestruj to z forumularzem do rejestracji.

Jak się do tego wgl zabrać?

0

Np.:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class ViewTest extends Application {
	
	private BorderPane layout;
	
	private int paneActive = 1;
	
	public Parent createContent() {
		
		/* layout */
		layout = new BorderPane();
		
		/* layout -> center */
		Pane paneOne = new Pane();
		paneOne.setStyle("-fx-background-color: #23a423;");
		
		Pane paneTwo = new Pane();
		paneTwo.setStyle("-fx-background-color: #452332;");
		
		/* layout -> bottom */
		HBox hBoxBottom = new HBox(5);
		
		Button buttonSwitchPanes = new Button("Switch Panes");
		buttonSwitchPanes.setPrefSize(100, 35);
		buttonSwitchPanes.setOnAction((actionEvent) -> {
			if (paneActive == 1) {
				layout.setCenter(paneTwo);
				paneActive = 2;
			} else {
				layout.setCenter(paneOne);
				paneActive = 1;
			}
		});
		
		Button buttonExitApp = new Button("Exit App");
		buttonExitApp.setPrefSize(100, 35);
		buttonExitApp.setOnAction((actionEvent) -> {
			System.exit(-1);
		});
		
		/* layout -> bottom (ADD ITEMS) */
		hBoxBottom.getChildren().addAll(buttonSwitchPanes, buttonExitApp);
		hBoxBottom.setAlignment(Pos.CENTER);
		
		/* return layout */
		layout.setCenter(paneOne);
		layout.setBottom(hBoxBottom);
		
		BorderPane.setMargin(hBoxBottom, new Insets(10, 10, 10, 10));
		
		return layout;
	}
	
	@Override
	public void start(Stage stage) throws Exception {
		stage.setScene(new Scene(createContent()));
		stage.setWidth(400);
		stage.setHeight(400);
		stage.show();
	}

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

dziękuje bardzo :) zaobrazowałes mi o co chodzi :) teraz będę próbować :)

0

Jednak mam problem

Chciałabym zrobić projekt zgodnie z MVC, stworzyłam już view, controllerdla każdego panelu + jeden główny. Nie mogę dodac do tego panelu głównego wszystkich paneli bo nachodzą one na siebie. Wiec mam teraz pytanie jak z maincontroller mogę odwołać sie do paneli?

0

A nie mozesz sobie zrobic tych róznych scen jako pliki fxml i potem je tylko w głównej klasie pomieniać?

0

Własnie zalezy mi jedynie na zmianie jednej cześci. W twoim rozwiazaniu musiałabym zrobić x takich samych widoków. I od nowa generować inne funkcje zawarte w pozostałych panelach

1 użytkowników online, w tym zalogowanych: 0, gości: 1