Olá Pessoal,
Estou desenvolvendo um projeto e tenho um client desktop em javaFX. A minha ideia é que ao clicar em um botão para abrir um formulário de cadastro ou para manipular alguma informação do sistema o fxml correspondente abra em um anchorpane no meio da janela mas sobreposto como se fosse um popup. A partir dai eu posso minimizar ele dentro da aplicação e abrir quando necessário, aplicar opacidade se necessário, etc.
sou novo no fórum e este é o meu primeiro post, não tenho muita experiência com fóruns espero não estar falando besteira rsrsrsrsrsrs
Segue abaixo o fonte fxml da minha página principal:
[code]<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.*?> <?import javafx.scene.canvas.*?> <?import javafx.scene.text.*?> <?import javafx.scene.shape.*?> <?import javafx.scene.*?> <?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.layout.*?> [/code]Não me ocupei ainda com a parte de design mas é mais ou menos isso que vai ser, os CircleFills na página inicial terão no evento onClicked do mouse a chamada de método que abre o fxml correspondente dentro de um anchor pane no centro da janela. É ele que eu queria manipular com minimizar, mover, restaurar mas tudo dentro da janela principal sem sair do programa ou mudar o scene principal.
Segue abaixo o código controller:
[code]public class DesktopClientPresentation implements Initializable{
private Controller controller = new ClientController();
@FXML private Button btnProduto,
btnLocalDeEstoque,
btnFornecedores,
btnMesas,
btnMovimentos;
@FXML private AnchorPane paneCenter;
private Scene scene;
/**
* Called to initialize a controller after its root element has been
* completely processed.
*
* @param location The location used to resolve relative paths for the root object, or
* <tt>null</tt> if the location is not known.
* @param resources The resources used to localize the root object, or <tt>null</tt> if
*/
@Override
public void initialize(URL location, ResourceBundle resources) {
}
public void abrirCadProduto(Event event) throws IOException {
System.out.println("Abrir Cadastro de Produtos: " + event);
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(ProdutosController.class.getResource("/fxml/produtos.fxml"));
this.paneCenter = (AnchorPane) fxmlLoader.load();
this.scene = new Scene(this.paneCenter);
}
}[/code]
produtos.fxml
[code]<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import java.lang.*?> <?import javafx.scene.layout.*?> [/code]ProdutosController.java
[code]package presentation;
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
/**
- Created by Augusto on 08/05/2015.
/
public class ProdutosController implements Initializable {
/*- Called to initialize a controller after its root element has been
- completely processed.
- @param location The location used to resolve relative paths for the root object, or
-
<tt>null</tt> if the location is not known.
-
@param resources The resources used to localize the root object, or null if
*/
@Override
public void initialize(URL location, ResourceBundle resources) {
System.out.println(“Produtos”);
}
}
[/code]
No controller do produtos.fxml eu apenas coloquei pra exibir uma mensagem no console me sinalizando que o mesmo foi inicializado. Apenas pra saber se deu certo…
Código da app principal
[code]package view;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.net.URL;
/**
-
Created by Augusto on 24/04/2015.
*/
public class App extends Application{/**
- The main entry point for all JavaFX applications.
- The start method is called after the init method has returned,
- and after the system is ready for the application to begin running.
-
-
- NOTE: This method is called on the JavaFX Application Thread.
- @param primaryStage the primary stage for this application, onto which
-
the application scene can be set. The primary stage will be embedded in
-
the browser if the application was launched as an applet.
-
Applications may create other stages, if needed, but they will not be
-
primary stages and will not be embedded in the browser.
*/
@Override
public void start(Stage primaryStage) throws Exception {Parent mainPane = FXMLLoader.load(getClass().getResource("/fxml/main.fxml")); Scene scene = new Scene(mainPane, 800, 600); primaryStage.setTitle("Projeto de Conclusão de Curso"); primaryStage.setScene(scene); primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}[/code]
Eu tentei encontrar no google coisas como vários scenes em uma janela, fxml dentro de anchorpane entre outras coisas… meu inglês é bem pobre e sei que tem muito material em inglês de javafx e muitos de ótima qualidade mas to desenvolvendo ainda minha habilidade com inglês…