... Tá legal, mas tá difícil

6 respostas
H

… Olá, colegas e colaboradores!!!

… É isto mesmo, tá legal estudar java, tá interessante o paradgma OO, mas é o caminho das pedras mesmo.

… Vejam só!!!, fiz mais um novo exercício, compilei o exemplo, deu tudo, certo, mas na hora de rodar, olha o que aparece:

[b]D:\JAVA\Exercicios\GUI>javac PanelDemo.java

D:\JAVA\Exercicios\GUI>java PanelDemo

Exception in thread main java.lang.NullPointerException

at java.awt.Container.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at PanelDemo.<init>(PanelDemo.java:48)

at PanelDemo.main(PanelDemo.java:16)[/b]

… O exemplo é este aqui:
// PanelDemo.java

import java.awt.;
import java.awt.event.
;

public class PanelDemo extends Frame
implements ActionListener {

private Label l1, l2;
private TextField entrada;
private Button bLimpar, bTransf, bOk;
private Panel pTop, pBot, pRight;

// metodo main
public static void main(String args[]) {
    PanelDemo f = new PanelDemo();
    f.addWindowListener(new CloseWindowAndExit());
    f.show();
}

// construtor
public PanelDemo() {
    super("Panel Demo");
    setSize(400, 120);

    // instanciacao dos componentes
    l1 = new Label("Entrada");
    l2 = new Label("Saída");
    entrada = new TextField(20);
    bLimpar = new Button("Limpar");
    bLimpar.addActionListener(this);
    bTransf = new Button("Ok");
    bTransf.addActionListener(this);
    pTop = new Panel(new FlowLayout(FlowLayout.LEFT));
    pTop.setBackground(Color.lightGray);
    pBot = new Panel(new GridLayout(1,2));
    pRight = new Panel();
    pRight.setBackground(Color.gray);

    // adicao dos componentes
    pTop.add(l1);
    pTop.add(entrada);
    add(pTop, BorderLayout.CENTER);
    pRight.add(l2);
    add(pRight, BorderLayout.EAST);
    pBot.add(bLimpar);
    pBot.add(bTransf);
    pBot.add(bOk);
    add(pBot, BorderLayout.SOUTH);
}

// interface ActionListener
public void actionPerformed(ActionEvent e) {
    if (e.getSource()==bLimpar) {
        // limpa entrada
        entrada.setText("");
    }  else if (e.getSource()==bTransf) {
        // entrada p/ saida
        l2.setText(entrada.getText());
    
    }  else {
        // fechar aplicacao
        System.exit(0);
    }
}

}

… O que aconteceu, como corrigir, se aparentemente está correto!!!
… Mas uma vez, peço ajuda.
… Grato!!!

6 Respostas

E

eae blz?

Observe essa sua linha de código:

// adicao dos componentes
pTop.add(l1);
pTop.add(entrada);
add(pTop, BorderLayout.CENTER);
pRight.add(l2);
add(pRight, BorderLayout.EAST);
pBot.add(bLimpar);
pBot.add(bTransf);
pBot.add(bOk);
add(pBot, BorderLayout.SOUTH);

substitua por:

// adicao dos componentes
pTop.add(l1);
pTop.add(entrada);
getContentPane().add(pTop, BorderLayout.CENTER);
pRight.add(l2);
getContentPane().add(pRight, BorderLayout.EAST);
pBot.add(bLimpar);
pBot.add(bTransf);
pBot.add(bOk);
getContentPane().add(pBot, BorderLayout.SOUTH);

compile e tente executar, achu q é soh isso que tah barrando
a execução mesmo

observando o erro:

D:\JAVA\Exercicios\GUI>java PanelDemo

Exception in thread main java.lang.NullPointerException

at java.awt.Container.addImpl(Unknown Source)

:arrow:  at java.awt.Container.add(Unknown Source)

:arrow: at PanelDemo.<init>(PanelDemo.java:48)

at PanelDemo.main(PanelDemo.java:16)

por isso a proposta de modificação dessa linha de código
:wink:

[]´s

H

… Obrigado ERKO!!!

… Gerou um novo código, ei-lo:

D:\JAVA\Exercicios\GUI>javac PanelDemo.j

PanelDemo.java:43: cannot resolve symbol

symbol  : method getContentPane ()

location: class PanelDemo

getContentPane().add(pTop, Borde

^

PanelDemo.java:45: cannot resolve symbol

symbol  : method getContentPane ()

location: class PanelDemo

getContentPane().add(pRight, Bor

^

PanelDemo.java:49: cannot resolve symbol

symbol  : method getContentPane ()

location: class PanelDemo

getContentPane().add(pBot, Borde

^

3 errors

… É duro, estar flutuando em uma área que se domina tão bem e m outra linguagem, que no meu caso é o VB.

… Obrigado!

S

se vc n extender a sua classe com o JFrame vc n pode fazer isso q vc fez!!
ou vc pode criar um OBJ JFrame
JFrame f=new JFrame();
e assim usar deste geito aki!!
f.getContentPane()

tenta extends o JFrame!!

import javax.swing.*;
public class PanelDemo extends JFrame

P

Oi!!! :o)

Soh q JFrame eh da java.swing… Que eh mais recomendável, pois java.awt são classes mais antigas…

Abs

H

… Muito Obrigado!!!

E

hehe não vi que tu tava usando o

Frame soh :oops:

getContentPane() isso é pro swing

:razz:
mas se tah tudo funcionando agora, entaum tah valendo :wink:

Criado 7 de abril de 2005
Ultima resposta 7 de abr. de 2005
Respostas 6
Participantes 4