setValue em jFormattedTextField

12 respostas
EhRuimHein

Pessoal, estou com um probleminha.

Fiz uma applet, que vai ficar disponível na página intranet do local onde trabalho, disponível para as outras unidades. O problema é que eu fiz essa applet usando o netbeans, com JDK 5.0. Nos testes que fiz na minha máquina e na máquina de um colega (que tb tem o JRE 5.0 instalado), rodou blz... mas qdo outras máquinas tentam abrir a applet, o espaço dela fica em branco. Pensei que talvez o problema fosse de compatibilidade do plug-in que está instalado na máquina dos outros empregados, e mudei o "Source level" do netbeans para 1.4. Só que daí um método que estava normal passou a dar problema. O trecho do código é esse:

teq = operacao.getTeq();
        teqvpl = operacao.getTeqVPL();
        
        operacaoOK = operacao.getOperacaoOK();
        
        if(operacaoOK == true){
            jTeq.setValue(teq);
            jTeqVPL.setValue(teqvpl);
        }

Tanto teq quanto teqvpl são Double, e o netbeans acusa o problema no método setValue(double), da classe jFormattedTextField.

Alguém pode me ajudar nisso?

Valeu!

12 Respostas

B

acontece que esse método é java 5, então se você mudsar o level de compilação para 1.4

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFormattedTextField.html

EhRuimHein

BrunoBastos:
acontece que esse método é java 5, então se você mudsar o level de compilação para 1.4

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFormattedTextField.html

Bruno

Inicialmente, eu tinha pensado isso… mas se vc entrar na documentação do jdk 1.4.2 citada acima, o método setValue() tb está lá, e com a mesma descrição do java 5. Ou estou olhando o método errado?

B

hmmm nao tinha olhado isso… no caso sdo eclipse costuma aparecer uma caixinha sdo lado esquerdo com um aviso não aparece nada assim no netbeans?

EhRuimHein

O código que antecede o exposto acima é:

percentFormat = NumberFormat.getPercentInstance(); percentFormat.setMaximumFractionDigits (4); percentFormat.setMinimumFractionDigits (4); jTeq = new JFormattedTextField(percentFormat); paymentFormat = NumberFormat.getCurrencyInstance(); jTeqVPL = new JFormattedTextField(paymentFormat);

Será que o problema pode estar aí? Esse código pode ser compilado em uma versão java 1.4???

EhRuimHein

Instalei o jdk 1.4.2, e tentei compilar a applet com ele. O erro foi o seguinte:

java.lang.UnsupportedClassVersionError: gov/caixa/gepre/gui/Teq (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:282)
        at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:123)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:561)
        at sun.applet.AppletPanel.createApplet(AppletPanel.java:619)
        at sun.applet.AppletPanel.runLoader(AppletPanel.java:548)
        at sun.applet.AppletPanel.run(AppletPanel.java:299)
        at java.lang.Thread.run(Thread.java:534)

Alguém pode me ajudar?

EhRuimHein

Aí vai o código completo da classe Teq.java, que é a applet propriamente dita:

package gov.caixa.gepre.gui;

import gov.caixa.gepre.fds.OperacaoFDS;
import java.text.NumberFormat;
import javax.swing.JFormattedTextField;
import javax.swing.UIManager;
import java.beans.*;

public class Teq extends javax.swing.JApplet implements PropertyChangeListener {
    public String modalidade, garantia;
    public boolean operacaoOK;
    public double vf, teq, teqvpl;
    public int qtedesemb, pamort, pztotal;
    
    private NumberFormat amountFormat;
    private NumberFormat intFormat;
    private NumberFormat percentFormat;
    private NumberFormat paymentFormat;
    
    
    public void init() {
        
        try {
            UIManager.setLookAndFeel(
                    UIManager.getSystemLookAndFeelClassName() );
        } catch (Exception e) { }
        
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    
    public void propertyChange(PropertyChangeEvent evt) {
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }
    
    
     private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jModalidade = new javax.swing.JComboBox();
        jGarantia = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        amountFormat = NumberFormat.getNumberInstance();
        jVf = new JFormattedTextField(amountFormat);

        intFormat = NumberFormat.getNumberInstance();
        intFormat.setMaximumFractionDigits (0);
        intFormat.setMinimumFractionDigits (0);
        jQtedesemb = new JFormattedTextField(intFormat);
        jPztotal = new JFormattedTextField(intFormat);
        percentFormat = NumberFormat.getPercentInstance();
        percentFormat.setMaximumFractionDigits (4);
        percentFormat.setMinimumFractionDigits (4);
        jTeq = new JFormattedTextField(percentFormat);
        paymentFormat = NumberFormat.getCurrencyInstance();
        jTeqVPL = new JFormattedTextField(paymentFormat);

        getContentPane().setLayout(null);

        setFont(new java.awt.Font("Agency FB", 0, 10));
        setForeground(new java.awt.Color(255, 255, 255));
        jLabel1.setBackground(new java.awt.Color(255, 255, 255));
        jLabel1.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel1.setText("Modalidade");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(20, 10, 110, 20);

        jLabel2.setBackground(new java.awt.Color(255, 255, 255));
        jLabel2.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel2.setText("Garantia");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(20, 40, 110, 20);

        jLabel3.setBackground(new java.awt.Color(255, 255, 255));
        jLabel3.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel3.setText("Valor de financiamento (R$)");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(20, 70, 170, 20);

        jLabel4.setBackground(new java.awt.Color(255, 255, 255));
        jLabel4.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel4.setText("Quantidade de desembolsos");
        getContentPane().add(jLabel4);
        jLabel4.setBounds(20, 100, 170, 20);

        jLabel5.setBackground(new java.awt.Color(255, 255, 255));
        jLabel5.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel5.setText("Prazo total");
        getContentPane().add(jLabel5);
        jLabel5.setBounds(20, 130, 100, 20);

        jModalidade.setModel(new javax.swing.DefaultComboBoxModel(new String[] { 
"Aquisição de imóvel novo", "Aquisição de material de construção", 
"Aquisição de terreno e construção", "Construção em terreno próprio", 
"Conclusão, reforma e/ou Ampliação" }));
        jModalidade.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jModalidadeActionPerformed(evt);
            }
        });

        getContentPane().add(jModalidade);
        jModalidade.setBounds(270, 10, 210, 20);

        jGarantia.setModel(new javax.swing.DefaultComboBoxModel(new String[] { 
"Fundo Garantidor de Crédito", "Perda Estimada" }));
        jGarantia.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jGarantiaActionPerformed(evt);
            }
        });

        getContentPane().add(jGarantia);
        jGarantia.setBounds(270, 40, 210, 22);

        jButton1.setBackground(new java.awt.Color(255, 240, 240));
        jButton1.setText("Calcula");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1);
        jButton1.setBounds(270, 160, 90, 23);

        jLabel6.setBackground(new java.awt.Color(255, 255, 255));
        jLabel6.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel6.setText("Taxa de equil\u00edbrio");
        getContentPane().add(jLabel6);
        jLabel6.setBounds(20, 190, 160, 20);

        jLabel7.setBackground(new java.awt.Color(255, 255, 255));
        jLabel7.setFont(new java.awt.Font("Arial", 1, 12));
        jLabel7.setText("Valor de equil\u00edbrio");
        getContentPane().add(jLabel7);
        jLabel7.setBounds(20, 220, 160, 20);

        jVf.setColumns(6);
        jVf.setFont(new java.awt.Font("Arial", 1, 12));
        jVf.addPropertyChangeListener("value", this);
        jVf.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jVfActionPerformed(evt);
            }
        });

        getContentPane().add(jVf);
        jVf.setBounds(270, 70, 72, 21);

        jQtedesemb.setColumns(2);
        jQtedesemb.setFont(new java.awt.Font("Arial", 1, 12));
        jQtedesemb.addPropertyChangeListener("value", this);
        jQtedesemb.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jQtedesembActionPerformed(evt);
            }
        });

        getContentPane().add(jQtedesemb);
        jQtedesemb.setBounds(270, 100, 28, 21);

        jPztotal.setColumns(3);
        jPztotal.setFont(new java.awt.Font("Arial", 1, 12));
        jPztotal.addPropertyChangeListener("value", this);
        jPztotal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jPztotalActionPerformed(evt);
            }
        });

        getContentPane().add(jPztotal);
        jPztotal.setBounds(270, 130, 39, 21);

        jTeq.setColumns(6);
        jTeq.setForeground(new java.awt.Color(0, 0, 204));
        jTeq.setFont(new java.awt.Font("Arial", 1, 12));
        getContentPane().add(jTeq);
        jTeq.setBounds(270, 190, 90, 21);

        jTeqVPL.setColumns(6);
        jTeqVPL.setForeground(new java.awt.Color(0, 0, 204));
        jTeqVPL.setFont(new java.awt.Font("Arial", 1, 12));
        getContentPane().add(jTeqVPL);
        jTeqVPL.setBounds(270, 220, 90, 21);

    }                   
    
    private void jPztotalActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }                                        
    
    private void jQtedesembActionPerformed(java.awt.event.ActionEvent evt) {                                           
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }                                          
    
    private void jVfActionPerformed(java.awt.event.ActionEvent evt) {                                    
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }                                   
    
    private void jGarantiaActionPerformed(java.awt.event.ActionEvent evt) {                                          
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }                                         
    
    private void jModalidadeActionPerformed(java.awt.event.ActionEvent evt) {                                            
        jTeq.setValue(null);
        jTeqVPL.setValue(null);
    }                                           
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        Object modalidade = jModalidade.getSelectedItem();
        Object garantia = jGarantia.getSelectedItem();
        vf = ((Number)jVf.getValue()).doubleValue();
        qtedesemb = ((Number)jQtedesemb.getValue()).intValue();
        pztotal = ((Number)jPztotal.getValue()).intValue();
        pamort = pztotal-qtedesemb+1;
        
        OperacaoFDS operacao = new OperacaoFDS();
        operacao.setModalidade(modalidade.toString());
        operacao.setGarantia(garantia.toString(), modalidade.toString());
        operacao.setDesemb(qtedesemb, modalidade.toString());
        operacao.setPamort(pamort, modalidade.toString());
        operacao.setPcaren(qtedesemb, modalidade.toString());
        operacao.setPztotal(pztotal, modalidade.toString());
        operacao.setVf(vf, modalidade.toString());
        operacao.setTeq();
        
        teq = operacao.getTeq();
        teqvpl = operacao.getTeqVPL();
        
        operacaoOK = operacao.getOperacaoOK();
        
        if(operacaoOK == true){
            jTeq.setValue(teq/100);
            jTeqVPL.setValue(teqvpl);
        }
    }                                        
    
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JComboBox jGarantia;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JComboBox jModalidade;
    private javax.swing.JFormattedTextField jPztotal;
    private javax.swing.JFormattedTextField jQtedesemb;
    private javax.swing.JFormattedTextField jTeq;
    private javax.swing.JFormattedTextField jTeqVPL;
    private javax.swing.JFormattedTextField jVf;
    // End of variables declaration
celiomarcos

Blz Bruno, conforme a própria documentação do NB, apenas mudar o “Source level” não altera o Java Plataform que é usado para compilar o projeto. Para isso vc precisa, fora instalar o JDK diferente, configurar, no NB, o Java Plataform Manager e ajustar na Propriedade do Projeto->Libraries o Java Plataform desejado.
Ae sim seu projeto estará compilando neste JDK.
Verifique ae e diga se o erro persiste

EhRuimHein

Blz Bruno, conforme a própria documentação do NB, apenas mudar o “Source level” não altera o Java Plataform que é usado para compilar o projeto. Para isso vc precisa, fora instalar o JDK diferente, configurar, no NB, o Java Plataform Manager e ajustar na Propriedade do Projeto->Libraries o Java Plataform desejado.
Ae sim seu projeto estará compilando neste JDK.
Verifique ae e diga se o erro persiste

Não precisa instalar outra JDK não… é só usar o código -target 1.4, por exemplo, para que o netbeans compile as classes com compatibilidade para JRE 1.4. Na pc que estou agora não tenho ele instalado, mas vc deve colocar esse código em um campo parecido com “additional compiling options”, ou algo parecido (fica perto do formulário onde vc escolhe o “source level”).

celiomarcos

Mas lendo isso do próprio site do netbeans:
“In the Source Level combo box (…) This setting tells the IDE which J2SE platform’s classes to use in code completion and error highlighting. It does not set the target JDK for your project. (…)
Note: The IDE checks all of its registered Java platforms for a platform with a matching version number and uses this platform to provide Javadoc and source code for debugging. To register a Java platform and specify the platform’s source code and Javadoc location, choose Tools > Platform Manager”
Me parece que não ha compilação para uma Plataforma que não estiver seu JDK na maquina, pois o NB não tem possui as versões

EhRuimHein

Célio

O -target, assim como o -source, são funções do javac, e não do netbeans.

javac -help
 Usage: javac <options> <source files>
 where possible options include:
   -g                         Generate all debugging info
   -g:none                    Generate no debugging info
   -g:{lines,vars,source}     Generate only some debugging info
   -nowarn                    Generate no warnings
   -verbose                   Output messages about what the compiler is doing
   -deprecation               Output source locations where deprecated APIs are u
 sed
   -classpath <path>          Specify where to find user class files
   -cp <path>                 Specify where to find user class files
   -sourcepath <path>         Specify where to find input source files
   -bootclasspath <path>      Override location of bootstrap class files
   -extdirs <dirs>            Override location of installed extensions
   -endorseddirs <dirs>       Override location of endorsed standards path
   -d <directory>             Specify where to place generated class files
   -encoding <encoding>       Specify character encoding used by source files
   -source <release>          Provide source compatibility with specified release
 
   -target <release>          Generate class files for specific VM version
   -version                   Version information
   -help                      Print a synopsis of standard options
   -X                         Print a synopsis of nonstandard options
   -J<flag>                   Pass <flag> directly to the runtime system

Quando vc usa o "source level" do netbeans, o que ele vai fazer é compilar com a função -source. E como vc pode ver acima, se vc colocar no Project Properties >> Build >> Compiling >> Additional compiler options >> o código -target 1.???, ele irá compilar as classes para uma VM específica. :wink:

celiomarcos

EhRuimHein, de qualquer forma eu acho melhor resolver a questão inicial deste tópico: Pq o applet não carrega nos browser clientes?
Responda algumas questões para ficar claro:
Pelo console, qual a excessão que ocorre?
Já verificou se outros applets carregam normalmente?
Em quais browsers, e versão, ocorre o problema?

EhRuimHein

Célio

Sou novato em java, e não tenho formação na área (sou matemático), portanto, estou em um nível bem básico ainda. O negócio é o seguinte: Depois de muito ler na internet, descobri o problema que houve entre a Microsoft e a Sun, e que o IE 6.0 (que vem junto com o XP) vem com a Microsoft VM 1.1.4. Daí o problema na compatibilidade. O problema é que só é possível atualizar o JRE das máquinas com senha de administrador, e isso daria uma certa dor de cabeça aqui na empresa onde trabalho. Resumo: O applet não poderia ter nenhum objeto swing! Refiz a interface gráfica só com AWT (pra colocar funcionalidades de jFormattedTextField em simples TextFields foi phoda pra mim, mas deu certo. Agora o applet já está em pleno funcionamento!

Agradeço de qualquer forma a sua atenção, e se alguém tiver com o mesmo problema que eu tive e quiser discutir, estou a disposição!

Criado 27 de maio de 2006
Ultima resposta 13 de jun. de 2006
Respostas 12
Participantes 3