Boa tarde pessoal,
Estou fazendo um projeto de Fila de Banco com prioridade para a faculdade com as seguintes requisitos:
- Pessoa retirar senha; (preenche os dados na tela e assim é criado objeto)
- Enfileirar dependendo dependendo da prioridade,
- Funcionário chama senha por prioridade
- Exibir pessoa chamada.
Eu fiz tudo da forma que eu aprendei, porém esta dando algum erro de ponteiro nulo que não estou conseguindo entender, alguém conseguiria por favor me ajudar a entender onde estou errando?
at classes.Fila.temProximo(Fila.java:97)
at bean.Bean.retirarSenha(Bean.java:54)
at view.TelaFuncionario.btnChamarSenhaActionPerformed(TelaFuncionario.java:99)
at view.TelaFuncionario.access$000(TelaFuncionario.java:13)
at view.TelaFuncionario$1.actionPerformed(TelaFuncionario.java:43)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at classes.Fila.temProximo(Fila.java:97)
at bean.Bean.retirarSenha(Bean.java:54)
at view.TelaFuncionario.btnChamarSenhaActionPerformed(TelaFuncionario.java:99)
at view.TelaFuncionario.access$000(TelaFuncionario.java:13)
at view.TelaFuncionario$1.actionPerformed(TelaFuncionario.java:43)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) ```
classe controler:
package bean;
import classes.Funcionario;
import classes.Fila;
import classes.Pessoa;
/**
*
-
@author Rafael H. Aguiar
*/
public class Bean {Fila filaNormal = new Fila(); Fila filaPreferencial = new Fila(); public boolean retirarSenha(Pessoa pessoa){ boolean validaSenha = false; if(!pessoa.getNome().isEmpty() || !pessoa.getCpf().isEmpty()){ if(pessoa.isTipoDeSenha()){ filaPreferencial.enfileirar(pessoa); }else{ filaNormal.enfileirar(pessoa); } validaSenha = true; } return validaSenha; } public Object retirarSenha(){ if(filaPreferencial.temProximo()){ return filaPreferencial.desenfileirar(); }else{ return filaNormal.desenfileirar(); } }
} // fim Bean
classe da fila:
package classes;
/**
*
-
@author Rafael H. Aguiar
*/
public class Fila {public Fila() {
}public Fila(Object[] fila, int ponteiroInicio, int ponteiroPercorrer, int ponteiroFim, int total) {
this.fila = new Object[10];
this.ponteiroInicio = 0;
this.ponteiroPercorrer = 0;
this.ponteiroFim = 0;
this.total = 0;
}public Object fila[];
private int ponteiroInicio;
private int ponteiroPercorrer;
private int ponteiroFim;
private int total;public int getPonteiroInicio() {
return ponteiroInicio;
}public void setPonteiroInicio(int ponteiroInicio) {
this.ponteiroInicio = ponteiroInicio;
}public int getPonteiroPercorrer() {
return ponteiroPercorrer;
}public void setPonteiroPercorrer(int ponteiroPercorrer) {
this.ponteiroPercorrer = ponteiroPercorrer;
}public int getPonteiroFim() {
return ponteiroFim;
}public void setPonteiroFim(int ponteiroFim) {
this.ponteiroFim = ponteiroFim;
}public int getTotal() {
return total;
}public void setTotal(int total) {
this.total = total;
}@Override
public String toString() {
return “Fila{” + “fila=” + fila + “, ponteiroInicio=” + ponteiroInicio + “, ponteiroPercorrer=” + ponteiroPercorrer + “, ponteiroFim=” + ponteiroFim + “, total=” + total + ‘}’;
}public void enfileirar(Object cliente){
if(cheia()){
throw new RuntimeException(“Fila cheia”);
}fila[getPonteiroFim()] = cliente;
setTotal(total++);
}public Object desenfileirar(){
if(vazia()){
throw new RuntimeException(“Fila vazia”);
}
Object cliente = fila[getPonteiroInicio()];
setPonteiroInicio(ponteiroInicio++);
setTotal(total–);
return cliente;
}public boolean cheia(){
return total == fila.length;
}public boolean vazia(){
return total == 0;
}public boolean temProximo(){
return fila[getPonteiroInicio() + 1] != null;
}
}
classe da pessoa
package classes;
/**
*
-
@author Rafael H. Aguiar
*/
public class Pessoa {public Pessoa() {
}private String nome, cpf;
private int senha;
private boolean tipoDeSenha;public Pessoa(String nome, String cpf, int senha, boolean tipoDeSenha) {
this.nome = nome;
this.cpf = cpf;
this.senha = senha;
this.tipoDeSenha = tipoDeSenha;
}public String getNome() {
return nome;
}public void setNome(String nome) {
this.nome = nome;
}public String getCpf() {
return cpf;
}public void setCpf(String cpf) {
this.cpf = cpf;
}public int getSenha() {
return senha;
}public void setSenha(int senha) {
this.senha = senha;
}public boolean isTipoDeSenha() {
return tipoDeSenha;
}public void setTipoDeSenha(boolean tipoDeSenha) {
this.tipoDeSenha = tipoDeSenha;
}@Override
public String toString() {
return “Pessoa{” + “nome=” + nome + “, cpf=” + cpf + “, senha=” + senha + “, tipoDeSenha=” + tipoDeSenha + ‘}’;
}
}
método na tela da pessoa (cliente) pedir senha:
private void btnRetirarSenhaActionPerformed(java.awt.event.ActionEvent evt) {
Pessoa pessoa = new Pessoa();
String nomeCliente = txtNome.getText();
String cpf = txtCPF.getText();
boolean preferencial = jCheckPreferencial.isSelected();
int senha = 0; // substituit por método criador de senha;
pessoa.setNome(nomeCliente);
pessoa.setCpf(cpf);
pessoa.setTipoDeSenha(preferencial);
pessoa.setSenha(senha);
Bean b = new Bean();
boolean validarSenha = b.retirarSenha(pessoa);
if(validarSenha == false){
lblErroSenha.setText("Necessário preencher todos os campos "
+ "indicados com o: *");
}
}
método na tela do funcionário chamar senha:
private void btnChamarSenhaActionPerformed(java.awt.event.ActionEvent evt) {
Bean b = new Bean();
lblDados.setText(b.retirarSenha().toString());
}