Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silva Mateus

JavaFx - Caused by: java.lang.StackOverflowError

Recommended Posts

Olá estou com um problema em minhas classes Java. Quando tento criar um novo "Fornecedor", o console me resulta o Caused by: java.lang.StackOverflowError. 

Aqui estão as minhas classes que interagem entre si. Se alguém poder me auxiliar na resolução deste problema, agradeço. 

package view;

import application.Main;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import model.Fornecedor;
import model.Produto;

public class FornecedorOverViewController {
	
    @FXML
    private TableView<Fornecedor> tabelaFornecedor;

    @FXML
    private TableColumn<Fornecedor, Integer> idFornecedor;

    @FXML
    private TableColumn<Fornecedor, String> nomeFornecedor;

    @FXML
    private TableColumn<Fornecedor, String> telefoneFornecedor;
    
    @FXML
    private Label nome;
    
    @FXML
    private Label telefone;
	 
    
    public FornecedorOverViewController() {
    	
    }
    int i = 0;

	private Main main;


    @FXML
    private void initialize() {

         nomeFornecedor.setCellValueFactory(
        		 cellData -> cellData.getValue().nomeProperty());
         telefoneFornecedor.setCellValueFactory(
        		 cellData -> cellData.getValue().telefoneProperty());
         idFornecedor.setCellValueFactory(new PropertyValueFactory<>("id"));
         showFornecedorDetails(null);

         tabelaFornecedor.getSelectionModel().selectedItemProperty().addListener(
 				(observable, oldValue, newValue) -> showFornecedorDetails(newValue));
         
    }
    public void setMainI(Main main) {
        this.main = main;
        tabelaFornecedor.setItems(main.getFornecedorData());
    }
  
    private void showFornecedorDetails(Fornecedor fornecedor) {
    	if (fornecedor != null) {
    		 nome.setText(fornecedor.getNome());
    		 telefone.setText(fornecedor.getTelefone());
    	} else {
    		 nome.setText(" ");
    		 telefone.setText(" ");
    	}
    }
   	@FXML
   	private void handleDeleteFornecedor() {
   		int selectedIndex = tabelaFornecedor.getSelectionModel().getSelectedIndex();
   		if (selectedIndex >= 0) {
   			tabelaFornecedor.getItems().remove(selectedIndex);
   		} else {
   		}
   	}
	@FXML
	private void handleNewFornecedor() {
		Fornecedor newFornecedor = new Fornecedor(null,0);
		boolean okClicked = main.showFornecedorEditDialog(newFornecedor);
		if (okClicked) {
			main.getFornecedorData().add(newFornecedor);
		}
	}

}
package application;

import java.io.IOException;


import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import model.Categoria;
import model.Fornecedor;
import model.Produto;
import model.Usuario;
import view.FornecedorEditDialog;
import view.FornecedorOverViewController;
import view.LoginController;
import view.ProdutoEditDialog;
import view.ProdutoOverViewController;
import view.RootLayoutController;

public class Main extends Application {


	private Stage primaryStage;
	private BorderPane rootLayout;
	private AnchorPane loginLayout;
 
	private ObservableList<Produto> produtoData = FXCollections.observableArrayList();
	private ObservableList<Fornecedor> fornecedorData = FXCollections.observableArrayList();
	private ObservableList<Usuario> usuarioData = FXCollections.observableArrayList();
	private ObservableList<Categoria> categoriaData = FXCollections.observableArrayList();
 
	public Main() {
		int i =0;
		produtoData.add(new Produto("Skol", 5.99, ++i,199));
		produtoData.add(new Produto("Budweiser", 8.99, ++i,2002));
		produtoData.add(new Produto("Heineken", 12.00, ++i,22));
		i = 0;
		fornecedorData.add(new Fornecedor("Ambev", ++i));
		fornecedorData.add(new Fornecedor("Cervejaria Heineken", ++i));
		fornecedorData.add(new Fornecedor("Coca-Cola", ++i));
		fornecedorData.add(new Fornecedor("Fonte-Ijuí", ++i));
		i = 0;
		
		usuarioData.add(new Usuario("mateus", "m16s97aa"));
		usuarioData.add(new Usuario("dala", "123456"));
		usuarioData.add(new Usuario("root", "654321"));
		
		categoriaData.add(new Categoria("Cerveja", ++i));
		categoriaData.add(new Categoria("Vinho", ++i));
		categoriaData.add(new Categoria("Vodka", ++i));
		categoriaData.add(new Categoria("Cachaca", ++i));
		i = 0;

	}

	@Override
	public void start(Stage primaryStage) {
		this.primaryStage = primaryStage;
		this.primaryStage.setTitle("Wine And Beer");

		login();
		/*
		if(click) {			
			initRootLayout();

			showProdutosOverView();
		}
		*/
	
	}

	public void initRootLayout() {
		try {
			// Load root layout from fxml file.
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main.class.getResource("/view/RootLayout.fxml"));
			rootLayout = (BorderPane) loader.load();

			// Show the scene containing the root layout.
			Scene scene = new Scene(rootLayout);
			primaryStage.setScene(scene);

			// Give the controller access to the main app.
			RootLayoutController controller = loader.getController();
			controller.setMain(this);

			primaryStage.show();
		} catch (IOException e) {
			e.printStackTrace();
		}

		/*
		// Try to load last opened person file.
		File file = getPersonFilePath();
		if (file != null) {
			loadPersonDataFromFile(file);
		}
		*/
	}
	public void logar() {
			primaryStage.close();
			
			initRootLayout();

			showProdutosOverView();
		//return true;
	}
	public void login() {
		try {
			// Load root layout from fxml file.
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main.class.getResource("/view/Login.fxml"));
			loginLayout = (AnchorPane) loader.load();

			// Show the scene containing the root layout.
			Scene scene = new Scene(loginLayout);
			primaryStage.setScene(scene);

			// Give the controller access to the main app.
			LoginController controller = loader.getController();
			controller.setMain(this);

			primaryStage.show();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
	public void showProdutosOverView() {
		try {
			// Load person overview.
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main.class.getResource("/view/Produto.fxml"));
			AnchorPane personOverview = (AnchorPane) loader.load();

			// Set person overview into the center of root layout.
			rootLayout.setCenter(personOverview);

			// Give the controller access to the main app.
			ProdutoOverViewController controller = loader.getController();
			controller.setMain(this);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	 
	
	public Stage getPrimaryStage() {
		return primaryStage;
	}
	public ObservableList<Produto> getProdutoData() {
		return produtoData;
	}
	public ObservableList<Fornecedor> getFornecedorData(){
		return  fornecedorData;
	}
	public ObservableList<Usuario> getUsuarioData(){
		return usuarioData;
	}
	public ObservableList<Categoria> getCategoriaData(){
		return categoriaData;
	}

	public static void main(String[] args) {
		launch(args);
	}
	public boolean showProdutoEditDialog(Produto produto) {
		try {
			// Load the fxml file and create a new stage for the popup dialog.
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main.class.getResource("/view/ProdutoEditDialog.fxml"));
			AnchorPane page = (AnchorPane) loader.load();
			
			// Create the dialog Stage.
			Stage dialogStage = new Stage();
			dialogStage.setTitle("Editar Produto");
			dialogStage.initModality(Modality.WINDOW_MODAL);
			dialogStage.initOwner(primaryStage);
		//	dialogStage.getIcons().add(new Image("file:resources/images/edit.png"));
			Scene scene = new Scene(page);
			dialogStage.setScene(scene);
			
			// Set the person into the controller.
			ProdutoEditDialog controller = loader.getController();
			controller.setDialogStage(dialogStage);
			controller.setProduto(produto);
			controller.lotarCombo(fornecedorData, categoriaData);
			controller.setMain(this);

			// Show the dialog and wait until the user closes it
			dialogStage.showAndWait();

			return controller.isOkClicked();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
	 
	public boolean showFornecedorEditDialog(Fornecedor fornecedor) {
		try {
			// Load the fxml file and create a new stage for the popup dialog.
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main.class.getResource("/view/FornecedorEditDialog.fxml"));
			AnchorPane page = (AnchorPane) loader.load();
			
			// Create the dialog Stage.
			Stage dialogStage = new Stage();
			dialogStage.setTitle("Editar Fornecedor");
			dialogStage.initModality(Modality.WINDOW_MODAL);
			dialogStage.initOwner(primaryStage);
			Scene scene = new Scene(page);
			dialogStage.setScene(scene);
			
			// Set the person into the controller.
			FornecedorEditDialog controller = loader.getController();
			controller.setDialogStage(dialogStage);
			controller.setFornecedor(fornecedor);
			controller.setMain(this);

			// Show the dialog and wait until the user closes it
			dialogStage.showAndWait();

			return controller.isOkClicked();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}
	
}
package view;

import application.Main;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import model.Fornecedor;
import model.Produto;

public class FornecedorEditDialog {

	@FXML
	private TextField nome; 
	@FXML 
	private TextField telefone;
	private Stage dialogStage;
	private Main main; 
	private int id;
	private Fornecedor fornecedor;
    private boolean okClicked = false;


    @FXML
    private void initialize() {
    }

    public void setDialogStage(Stage dialogStage) {
        this.dialogStage = dialogStage;
    }
    
    public void setMain(Main main) {
    	this.main = main;
    	id = main.getFornecedorData().size();
    	id = id+1;
    }
    public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
        nome.setText(fornecedor.getNome());
        telefone.setText(fornecedor.getTelefone());
        
    }
    public boolean isOkClicked() {
        return isOkClicked();
    }
    @FXML
    private void handleOk() {
        if (isInputValid()) {
            fornecedor.setNome(nome.getText());
	        fornecedor.setTelefone(telefone.getText());

	        if(fornecedor.getId() == 0) {
	        	fornecedor.setId(this.id);
	        }
	        
	        
            okClicked = true;
            dialogStage.close();
        }
    }

    @FXML
    private void handleCancel() {
        dialogStage.close();
    }
    private boolean isInputValid() {
        String errorMessage = "";

        if (nome.getText() == null || nome.getText().length() == 0) {
            errorMessage += "Produto Invalido!\n"; 
        }
        if (telefone.getText() == null || telefone.getText().length() == 0) {
            errorMessage += "Preco invalidos!\n"; 
        }
        if (errorMessage.length() == 0) {
            return true;
        } else {
            // Show the error message.
        	 
            return false;
        }
    }
    
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Jack Oliveira
      Ola pessoal boa tarde
      estou tentando fazer um texto se mover dentro do input porem nao esta dando resultado que preciso
       
      Este é o codigo 
      <script type="text/javascript"> $(document).ready(function () { var frases = [{ 'elemento': $('input[name=search_string]'), 'frases': ["O que você está procurando?", "Buscar por: Academia, Barbearia, Churrascaria, Decoração, Escola, Farmácia, Gráfica, Imobiliaria, Lanchonete, Mecânica, Odontologia, Pizzaria...", "Faça sua busca por segmentos aqui.", "São mais de 3mil empresas para serem exploradas."] }]; animaInput(frases); }); </script>  
    • Por Rengavitp
      Boa noite pessoal!
       
      Estou fazendo um projeto web com spring boot e é a primeira vez que lido com imagens. Minha idéia é salvar imagens em uma pasta e depois recuperar essa imagem e mostrar, mas o problema que estou enfrentando é o seguinte, seu eu envio para o src do projeto na pasta imagens, eu até consigo acessar as imagens, mas preciso atualizar o projeto na IDE (isso vai acontecer em produção?) eu tentei salvar em uma pasta fora do source do projeto mas ai não consigo acessar. como devo fazer? fiz várias pesquisas, mas nenhuma me ajudou.
       
      Desde já agradeço.
    • Por Rengavitp
      Bom dia pessoal!

      Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

      Versão do java na aplicacao 11
      Versão do jva no servidor 11
      Versão do tomcat no servidor 8.5.55
       
      minha classe principal
      package br.com.masterplastfitas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MasterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MasterApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MasterApplication.class); } } meu pom.xml
      <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>masterplast</groupId> <artifactId>Master</artifactId> <version>2.0</version> <packaging>war</packaging> <name>Master</name> <description>Aplicação web </description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>  
    • Por Stephhany909
      While trying to persist an object with an attribute of type Point, defined as follows:
       
      @Entity @Table(name = "event") public class Event { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(columnDefinition = "POINT") private Point coordinate; } I'm getting the error Data truncation: Cannot get geometry object from data you send to the GEOMETRY field.
      The corresponding database table is defined as follows:
       
      create table event ( id bigint not null auto_increment, coordinate POINT, primary key (id) ) engine= InnoDB; What am I missing?
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.