| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/10/2007 11:07:57
|
walterfelipe
JavaChild
![[Avatar]](/images/avatar/c64107e33aa9fee83d57501f9a672344.jpg)
Membro desde: 08/01/2007 13:54:08
Mensagens: 136
Localização: Recife-PE
Offline
|
Bom dia pessoal, tenho um pequeno problema que gostaria da ajuda de vocês para resolver: Na aplicação tenho uma tela que estende de Dialog e que faz a opção para solicitação de planos de pagamento.Bem se escolhermos uma opção de plano que tenha alguma entrada tipo 1+2 temos que informar o valor da entrada em uma nova tela que é um novo Dialog, se na informação da entrada incluirmos um valor igual ou menos que zero será mostrado um JOptionPane.showMessageDialog que informa que o valor é inválido.Desta forma o cara dá um esc e volta para o Dialog anterior para informar o valor correto. A bronca é que no windows isso funciona normal, porém quando roda no linux no momento que damos esc para voltar para a tela de informação do valor da entrada a tela fecha junto com o JOptionPane e voltamos para a 1º tela de escolha do plano de pagamento. Segue abaixo o trecho de código que faz esse fluxo descrito. Espero poder contar com a ajuda de vocês.
OBS: Procurando o comentário "//aqui ele deveria apenas voltar para tela de informar a entrada." encontramos o ponto do problema
[code]
/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private MYMoney getJTextField() {
if (jTextField == null) {
jTextField = new MYMoney();
jTextField.setPreferredSize(new java.awt.Dimension(100,20));
jTextField.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
// rotina para quando o campo perder o foco.
jTextField.requestFocus();
}
});
jTextField.addKeyListener(new KeyAdapter(){
public void keyPressed(java.awt.event.KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if(getJTextField().getValor() != null &&
getJTextField().getValor().greater(MYBigDecimal.ZERO) &&
getValorEntrada() != null &&
getJTextField().getValor().greaterOrEquals(getValorEntradaMinimo()) &&
getJTextField().getValor().lesser(getObjetoEventoPlano().getValorEvento())){
setValorEntrada(getJTextField().getValor());
getJTextField().setValor(getJTextField().getValor());
try{
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: Valor Entrada :: " + getValorEntrada());
exibirPlanoCalculado();
jahVerificouAutonomiaLimite = true;
valorEntradaAnterior = getValorEntrada();
}catch (ExcecaoVolta ef) {
if(ef.getCodigo().equalsIgnoreCase(AUTONOMIA_ULTRAPASSADA+"")){
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: AUTONOMIA ULTRAPASSADA");
MYBigDecimal valorAutonomia = MYBigDecimal.ZERO;
try{
valorAutonomia = buscaValorAutonomia();
}catch (Exception efg) {
// TODO: handle exception
}
JOptionPane.showMessageDialog(tela,
MensagensPDV.getDescricao("PDV939")+" "+
getComponente().getConfiguracao().getParametroInternacionalizacao().numeroToString(valorAutonomia));
getJTextField().requestFocus();
}else if(ef.getCodigo().equalsIgnoreCase(LIMITE_ULTRAPASSADO+"")){
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: LIMITE ULTRAPASSADO");
JOptionPane.showMessageDialog(tela, MensagensPDV.getDescricao("PDV940"));
getJTextField().requestFocus();
}
}
}else{
String mensagem = "";
if(getJTextField().getValor() != null && getJTextField().getValor().greater(getObjetoEventoPlano().getValorEvento())){
mensagem = "Valor informado para entrada esta acima do valor da operacao";
}else if(getJTextField().getValor() != null && getJTextField().getValor().lesser(getValorEntradaMinimo())){
mensagem = "Valor informado para entrada invalido esta abaixo do minimo da operacao";
}else{
mensagem = "Valor informado para entrada invalido";
}
JOptionPane.showMessageDialog(tela, mensagem);
tela.getJTextField().requestFocus();
}
}else if(e.getKeyCode() == KeyEvent.VK_SPACE){
int autonomiaLimniteCliente = LIMITE_AUTONOMIA_OK;
if(!jahVerificouAutonomiaLimite || (getJTextField().getValor() != null && !getJTextField().getValor().equals(valorEntradaAnterior))){
autonomiaLimniteCliente = validaAutonomiaCliente(getPlano().getValorParcela(), getObjetoEventoPlano().getValorEvento().subtract(getJTextField().getValor()));
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: Retorno da Autonomia" + autonomiaLimniteCliente);
if(autonomiaLimniteCliente == AUTONOMIA_ULTRAPASSADA){
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: AUTONOMIA ULTRAPASSADA");
JOptionPane.showMessageDialog(tela, MensagensPDV.getDescricao("PDV939")+" "+buscaValorAutonomia());
getJTextField().requestFocus();
}else if(autonomiaLimniteCliente == LIMITE_ULTRAPASSADO){
MYDebug.println("TelaSolicitaEntrada :: verificaAutonomiaLimiteEvento :: LIMITE ULTRAPASSADO");
JOptionPane.showMessageDialog(tela, MensagensPDV.getDescricao("PDV940"));
getJTextField().requestFocus();
}else{
autonomiaLimniteCliente = LIMITE_AUTONOMIA_OK;
}
}
if(autonomiaLimniteCliente == LIMITE_AUTONOMIA_OK){
if(getJTextField().getValor() != null &&
getJTextField().getValor().greater(MYBigDecimal.ZERO) &&
getValorEntrada() != null &&
getJTextField().getValor().greaterOrEquals(getValorEntrada())){
retornoTela = new RetornoTelaSolicitaEntrada();
retornoTela.setValorEntrada(getValorEntrada());
retornoTela.setPlano(getPlanoAtual());
retornoTela.setTipoRetorno(TelaSolicitaEntrada.RETORNO_BUTTON_OK);
tela.dispose();
}else{
JOptionPane.showMessageDialog(tela, "Valor informado para entrada invalido");
getJTextField().requestFocus(); //aqui ele deveria apenas voltar para tela de informar a entrada.
}
}
}else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
retornoTela = new RetornoTelaSolicitaEntrada();
retornoTela.setTipoRetorno(TelaSolicitaEntrada.RETORNO_BUTTON_CANCEL);
tela.dispose();
}
}
});
}
return jTextField;
}
[/code]
|
Walter Felipe
Apaixonado por estrada e motocicletas
Analista de Sistemas
Especialista em Engenharia de Software
SCJP - Sun Certified Java Programmer
SCWCD - Sun Certified Web Component Developer
http://www.cin.ufpe.br/~wfs |
|
|
 |
|
|
|
|
|
|