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; }
<a class="mention" href="/u/override">@Override</a> 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; }
<a class="mention" href="/u/override">@Override</a> 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());
}