Boa noite pessoal, sou novo aqui no fórum.
Estou tentando resetar um combo box quando uma certa ação e realizada, porem que se essa ação é executada ele reseta o combo, mas gera erro. Se alguém poder me ajudar fico muito grato!
/----Código abaixo----\
Quando eu clico no combo box é executada a seguinte ação:
@FXML
private void CheckComboBox() {
if (CB_Acao.getValue().equals(“Inserir Saldo”)) {
//Habilita inserir saldo;
EnableSaldo();
//Reseta a opção selecionada do ComboBox;
CB_Acao.getSelectionModel().clearSelection();
}
}
Logo após vem o seguinte erro:
Caused by: java.lang.NullPointerException
at Controller.controllerForm.CheckComboBox(controllerForm.java:42)
… 158 more
E essa linha 42 é o meu if.
@FXML
private ComboBox CB_Acao
Mas meu código está assim amigo e da o mesmo erro.
1 curtida
Colocar a tua classe completa e o teu arquivo .fxml pra dar uma olhada
FXML
<BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller.controllerForm"> <center> <GridPane hgap="5" vgap="5" alignment="CENTER"> <Label text="Selecione uma ação:" GridPane.rowIndex="0" GridPane.columnIndex="0"/> <ComboBox fx:id="CB_Acao" onAction="#CheckComboBox" promptText="Selecionar" GridPane.rowIndex="1" GridPane.columnIndex="0"> <items> <FXCollections fx:factory="observableArrayList"> <String fx:value="Inserir Saldo"/> <String fx:value="Excluir Funcionário"/> <String fx:value="Excluir Serviço"/> </FXCollections> </items> </ComboBox> <GridPane alignment="CENTER" GridPane.rowIndex="2" hgap="5" vgap="5" gridLinesVisible="false" > <Label fx:id="Lbl_Saldo2" text="Novo Saldo:" GridPane.rowIndex="0" GridPane.columnIndex="0" /> <TextField fx:id="Txt_Adicionar_Sal" GridPane.columnIndex="0" GridPane.rowIndex="1" maxWidth="85"/> <HBox GridPane.columnIndex="0" GridPane.rowIndex="2" spacing="5"> <Button fx:id="Btn_Adicionar" text="Adicionar" onAction="#OnSaldo" /> <Button fx:id="Btn_Cancel" text="Cancelar"/> </HBox> </GridPane> </GridPane> </center> </BorderPane>
Classe
package Controller;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
/**
*
-
@author Jefersom Alves
*/
public class controllerForm {
@FXML
private ComboBox CB_Acao;
@FXML
private Label Lbl_Saldo2;
@FXML
private TextField Txt_Adicionar_Sal;
@FXML
private Button Btn_Adicionar;
@FXML
private Button Btn_Cancel;
@FXML
private void initialize() {
System.out.println("Controler formulário inicializado!");
DisableSaldo();
}
@FXML
private void CheckComboBox() {
if (CB_Acao.getValue().equals(“Inserir Saldo”)) {
//Habilita inserir saldo;
EnableSaldo();
//Reseta a opção selecionada do ComboBox;
//CB_Acao.setDisable(true);
CB_Acao.getSelectionModel().clearSelection();
}
}
private void EnableSaldo() {
Lbl_Saldo2.setDisable(false);
Txt_Adicionar_Sal.setDisable(false);
Btn_Adicionar.setDisable(false);
Btn_Cancel.setDisable(false);
}
//Disabilita a opção de preenchimento de saldo;
private void DisableSaldo() {
Lbl_Saldo2.setDisable(true);
Txt_Adicionar_Sal.setDisable(true);
Btn_Adicionar.setDisable(true);
Btn_Cancel.setDisable(true);
}
//Reseta a opção selecionada do ComboBox;
private void LimpaAcaoCB() {
}
@FXML
private void OnSaldo() {
System.out.println("Saldo add: " + Txt_Adicionar_Sal.getText());
Txt_Adicionar_Sal.clear();
CB_Acao.setDisable(false);
//Limpa as opções escolhidas;
}
}
O arquivo fxml estar completo ? é só isso .
Aconteceu algum bug foi mal.
Agora sim, segue o arquivo FXML:
<BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller.controllerForm"> <center> <GridPane hgap="5" vgap="5" alignment="CENTER"> <Label text="Selecione uma ação:" GridPane.rowIndex="0" GridPane.columnIndex="0"/> <ComboBox fx:id="CB_Acao" onAction="#CheckComboBox" promptText="Selecionar" GridPane.rowIndex="1" GridPane.columnIndex="0"> <items> <FXCollections fx:factory="observableArrayList"> <String fx:value="Inserir Saldo"/> <String fx:value="Excluir Funcionário"/> <String fx:value="Excluir Serviço"/> </FXCollections> </items> </ComboBox> <GridPane alignment="CENTER" GridPane.rowIndex="2" hgap="5" vgap="5" gridLinesVisible="false" > <Label fx:id="Lbl_Saldo2" text="Novo Saldo:" GridPane.rowIndex="0" GridPane.columnIndex="0" /> <TextField fx:id="Txt_Adicionar_Sal" GridPane.columnIndex="0" GridPane.rowIndex="1" maxWidth="85"/> <HBox GridPane.columnIndex="0" GridPane.rowIndex="2" spacing="5"> <Button fx:id="Btn_Adicionar" text="Adicionar" onAction="#OnSaldo" /> <Button fx:id="Btn_Cancel" text="Cancelar"/> </HBox> </GridPane> </GridPane> </center> </BorderPane>
Tente fazer isso
@FXML
private ComboBox<String> CB_Acao;
E preciso colocar um valor default para não dar o NullPointException
Coloquei mas não deu.
private ComboBox<String> CB_Acao;
Mas continua com o mesmo erro.
Fiz algo e deu certo
Baixar esse pacote
Link
E executa a classe Controller
Tem certeza cara? Continua com o mesmo erro. Esse jeito que você fez acho que não precisava de alguns códigos como os que você colocou no controller, pois os mesmo estão na minha classe principal. Deixa eu te explicar um pouco mais. Esse aquivo que postei é de um teste, o meu arquivo original possui a classe principal que executa um login e depois do login, um formulário que contem esse combobox.
Não sei porque você colocou alguns códigos da classe principal na classe controller. Mas se não conseguir eu já fico grato pelo menos ter tentando.
Amigo não dar dando certo por que você colocou o metodo na action do CheckBox e ele não tem nenhum valor quando ele é clicado. Por isso o NullPontException
Dentro da action do Button adicionar colocar assim :
Faça assim :
@FXML
private void OnSaldo() {
System.out.println("Saldo add: " + Txt_Adicionar_Sal.getText());
Txt_Adicionar_Sal.clear();
CB_Acao.setDisable(false);
if (CB_Acao.getValue().equals("Inserir Saldo")) {
//Habilita inserir saldo;
EnableSaldo();
//Reseta a opção selecionada do ComboBox;
//CB_Acao.setDisable(true);
//CB_Acao.getSelectionModel().clearSelection();
CB_Acao.setValue("Selecionar");
}
}
1 curtida
Ae caralho kkk. Valeu cara deu certinho. Muito obrigado, e tudo de bom pra você! 
1 curtida