Boa noite a todos!
Sou novo aqui no forum e no java tambem. Estou com um problema em meu programa. Uso o paint g para desenhar a imagem (layout) que declarei anteriormente mas ao usar o g.drawImage, a imagem não aparece. Na verdade o paint parece não funcionar. Outro problema que tenho é que quando clico no botão para calcular meus valores, dá o seguinte o erro:
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:994)
at java.lang.Double.valueOf(Double.java:475)
at EfeitoFotoeletrico$calcular.actionPerformed(EfeitoFotoeletrico.java:175)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
O código segue abaixo:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class EfeitoFotoeletrico extends JFrame {
Image Im = new ImageIcon ( getClass ( ).getResource ( "/layout.jpg" ) ).getImage ( );
JFrame tela = new JFrame(); //Cria a tela do programa
double h = 6.63E-34; //Constante de Planck em J.s
double ce = 1.60E-19; //Carga do eletron em C
double c = 3.00E+8; //Velocidade da luz em m/s
double m = 9.00E-31; //Massa do Elétron
double co; //Comprimento de onda
double f; //Frequencia
double I; //Intensidade do feixe
double V; //Potencial aplicado
double V0; //Potencial de corte
double ie; //Corrente eletrica
double Ec; //Energia cinetica
double T; //Função trabalho
double ve; //Velocidade do elétron;
//Cria os campos onde serão inseridos os dados
JTextField TCompOnda = new JTextField();
JTextField TFuncTrabalho = new JTextField();
JTextField TPotencAplic = new JTextField();
JTextField TIntensidade = new JTextField();
JTextField EnergiaCinetica = new JTextField();
JTextField VeloEletron = new JTextField();
//Cria os rótulos
JLabel rotulo1 = new JLabel("<html>Comprimento de Onda:</html>");
JLabel rotulo2 = new JLabel("<html>Função Trabalho:</html>");
JLabel rotulo3 = new JLabel("<html>Potencial Aplicado:</html>");
JLabel rotulo4 = new JLabel("<html>Intensidade do feixe:</html>");
JLabel rotulo5 = new JLabel("<html>Energia Cinetica: </html>");
JLabel rotulo6 = new JLabel("<html>Velocidade do Elétron:</html>");
JLabel rotulo7 = new JLabel("<html>Potencial de Corte:</html>");
JLabel rotulo8 = new JLabel("<html>Corrente Gerada:</html>");
//Cria o butão
JButton entra = new JButton("CALCULAR");
public EfeitoFotoeletrico() {
//Configurando a tela
tela.setLayout(null);
tela.setSize(1024,768);
tela.setVisible(true);
tela.setLocationRelativeTo(null);
tela.setTitle("Efeito Fotoelétrico");
tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
//Adicionando todos os itens na tela
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
tela.add(rotulo5);
tela.add(rotulo6);
tela.add(rotulo7);
tela.add(rotulo8);
tela.add(TCompOnda);
tela.add(TFuncTrabalho);
tela.add(TPotencAplic);
tela.add(TIntensidade);
tela.add(EnergiaCinetica);
tela.add(VeloEletron);
tela.add(entra);
//Posicionando e configurando os itens na tela
rotulo1.setVisible(true);
rotulo1.setSize(80,80);
rotulo1.setLocation(10,10);
rotulo2.setVisible(true);
rotulo2.setSize(80,80);
rotulo2.setLocation(100,10);
rotulo3.setVisible(true);
rotulo3.setSize(80,80);
rotulo3.setLocation(190,10);
rotulo4.setVisible(true);
rotulo4.setSize(80,80);
rotulo4.setLocation(280,10);
rotulo5.setVisible(true);
rotulo5.setSize(80,80);
rotulo5.setLocation(400,10);
rotulo6.setVisible(true);
rotulo6.setSize(80,80);
rotulo6.setLocation(400,100);
rotulo7.setVisible(true);
rotulo7.setSize(80,80);
rotulo7.setLocation(400,200);
rotulo8.setVisible(true);
rotulo8.setSize(80,80);
rotulo8.setLocation(400,300);
TCompOnda.setVisible(true);
TCompOnda.setSize(80,50);
TCompOnda.setLocation(10,90);
TFuncTrabalho.setVisible(true);
TFuncTrabalho.setSize(80,50);
TFuncTrabalho.setLocation(100,90);
TPotencAplic.setVisible(true);
TPotencAplic.setSize(80,50);
TPotencAplic.setLocation(190,90);
TIntensidade.setVisible(true);
TIntensidade.setSize(80,50);
TIntensidade.setLocation(280,90);
EnergiaCinetica.setVisible(true);
EnergiaCinetica.setSize(80,50);
EnergiaCinetica.setLocation(490,25);
EnergiaCinetica.enable(false);
VeloEletron.setVisible(true);
VeloEletron.setSize(80,50);
VeloEletron.setLocation(490,120);
VeloEletron.enable(false);
entra.setVisible(true);
entra.setSize(100,40);
entra.setLocation(100,150);
entra.addActionListener(new calcular()); // Inicia o processo de ação no butão
}
class calcular implements ActionListener{
public void actionPerformed(ActionEvent e){
//Procedimentos a serem executados ao clicar no botão:
//Lendo os dados das caixas de texto
String FT = TFuncTrabalho.getText();
String PA = TPotencAplic.getText();
String CPO = TCompOnda.getText();
String IF = TIntensidade.getText();
//Jogando os dados transformados em double nas variaveis
T = Double.valueOf(FT);
V = Double.valueOf(PA);
co = Double.valueOf(CPO);
I = Double.valueOf(IF);
//Calculando os valores
f = c / (co / [telefone removido]);
Ec = f * h - T;
ve = Math.sqrt((2 * m) / Ec);
V0 = Ec / ce;
//Exibindo na tela
String Ec2 = String.valueOf(Ec);
EnergiaCinetica.setText(Ec2);
String VelEle = String.valueOf(ve);
VeloEletron.setText(VelEle);
}
}
public static void main(String args[]){
JFrame p = new EfeitoFotoeletrico();
}
public void paintComponent(Graphics g) {
g.drawImage (Im,0,0,this);
}
}
Alguem pode me ajudar?