setValue em jFormattedTextField

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:

[code]teq = operacao.getTeq();
teqvpl = operacao.getTeqVPL();

    operacaoOK = operacao.getOperacaoOK();
    
    if(operacaoOK == true){
        jTeq.setValue(teq);
        jTeqVPL.setValue(teqvpl);
    }[/code]

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!

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

[quote=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[/quote]

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?

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?

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???

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?

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          

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

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[/quote]

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”).

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

Célio

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

[code]javac -help
Usage: javac
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 Specify where to find user class files
-cp Specify where to find user class files
-sourcepath Specify where to find input source files
-bootclasspath Override location of bootstrap class files
-extdirs Override location of installed extensions
-endorseddirs Override location of endorsed standards path
-d Specify where to place generated class files
-encoding Specify character encoding used by source files
-source Provide source compatibility with specified release

-target 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 Pass directly to the runtime system
[/code]

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:

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?

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!