não agento mais

16 respostas
K

ola gente tudo bem?
to no maior desespero to fazendo um trabalho que algumas codificações não estão funcionando, gostaria de uma ajuda de todos
:cry: por favor!!

la vai o codigo:

import java.awt.*;

public class ProvaFinal{

public static void main(String[] args){

Frame f=new Frame(Calculadora);

java.awt.Label label1= new java.awt.Label();

java.awt.Label label2= new java.awt.Label();

label1.setText(Valor);

label1.setAlignment(java.awt.Label.LEFT);

label2.setText(Resultado);

label2.setAlignment(java.awt.Label.LEFT);

f.add(label1);

f.add(label2);

f.setVisible(true);

TextField t1=new TextField("",10);

TextField t2= new TextField("",10);

f.setSize(100,70);

f.setLayout(new FlowLayout(FlowLayout.CENTER));

f.add(t1);

f.add (t2);

f.setEnabled(false);

f.setVisible(true);

f.setSize(200,200);

Button b1= new Button(ok);

Button b2= new Button (limpar);

f.setBackground(Color.gray);

f.setLayout(new FlowLayout(FlowLayout.LEADING));

f.add(b1);

f.add(b2);

f.setVisible(true);

}}

public interface WindowsListener{ // criei  a interface 

public void windowClosed(WindowEvent e);
}
public abstract class WindowAdapter implements WindowsListener{// implemetação da interface
	
 void windowClosed(WindowEvent e);
 
       {System.exit(0)};

}
se alguem poder me ajudar agradeço
:oops:
karlota

16 Respostas

T

É quase impossível ler seu código. O que são esses links?
Use os tags code para colocar código. E use o botão ‘prever’ antes de enviar um post.

Limpando seu código fica:
(Fiz uma série de comentários que vão lhe ajudar a entender o que você está fazendo)

import java.awt.*;

public class ProvaFinal {
    public static void main(String[] args) {
        Frame f = new Frame("Calculadora");
        // Se você já importou java.awt.*, não precisa usar o nome completo da classe
        java.awt.Label label1 = new java.awt.Label();
        java.awt.Label label2 = new java.awt.Label();
        label1.setText("Valor");
        label1.setAlignment(java.awt.Label.LEFT);
        label2.setText("Resultado");
        label2.setAlignment(java.awt.Label.LEFT);
        f.add(label1);
        f.add(label2);
        // Adicione todos os controles antes de mostrar o Frame
        f.setVisible(true);
        // Se o TextField for vazio inicialmente, basta mandar o número de colunas
        TextField t1 = new TextField("",10);
        TextField t2 = new TextField("",10);
        f.setSize(100,70);
        // É mais elegante definir o layou antes de mostrar o Frame
        f.setLayout(new FlowLayout(FlowLayout.CENTER));
        f.add(t1);
        f.add (t2);
        // Você está desabilitando todo o Frame
        f.setEnabled(false);
        // O Frame já está visível!
        f.setVisible(true);
        f.setSize(200,200);
        Button b1 = new Button("ok");
        Button b2 = new Button ("limpar");
        f.setBackground(Color.gray);
        // O layout já foi definido antes, qual dos dois você deseja usar?
        f.setLayout(new FlowLayout(FlowLayout.LEADING));
        f.add(b1);
        f.add(b2);
        // O Frame já está visivel!!
        f.setVisible(true);
    }
}

// Você está declarando uma interface chamada WindowListener, quando o
//    que você quer fazer é implementar um WindowListener do pacote java.awt.event.
// Você só pode ter uma classe/interface pública por arquivo, e o arquivo deve ter
//    o mesmo nome da classe/interface
public interface WindowsListener{
    public void windowClosed(WindowEvent e);
}

// Isso não faz o menor sentido, nem a quantidade de chaves bate.
// Se a classe for abstrata, você não podera instanciá-la.
// Novamente, você só pode ter uma classe/interface pública por arquivo, e o arquivo
//    deve ter o mesmo nome da classe/interface
public abstract class WindowAdapter implements WindowsListener{

    // Se o método não é abstrato, não deve terminar em ';', mas sim ter um corpo '{ }'
    void windowClosed(WindowEvent e);

    // Esse pedaço de código está perdido
    {System.exit(0)};

}

É uma boa idéia aprender o básico do java, como usar pacotes, classes e interfaces, declarar métodos, etc., antes de se aventurar com awt/swing.

F

tenta isso:

public interface WindowsListener{ // criei a interface

public void windowClosed(WindowEvent e);
}
public abstract class WindowAdapter implements WindowsListener{// implemetação da interface
 void windowClosed(WindowEvent e){
 System.exit(0);
 }
}
T

Uma implementação dessa interface não poderá ser usada como parâmetro para o método addWindowListener de Frame, é preciso uma implementação de java.awt.WindowListener.

T

Olá karlota, dei uma arrumada no seu código, veja como ficou:

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

public class ProvaFinal {
    public static void main(String[] args) {
        Frame f = new Frame("Calculadora");
        f.setSize(200, 200);
        f.setBackground(Color.gray);
        f.setLayout(new FlowLayout(FlowLayout.CENTER));
        Label label1 = new Label("Valor");
        Label label2 = new Label("Resultado");
        f.add(label1);
        f.add(label2);
        TextField t1 = new TextField(10);
        TextField t2 = new TextField(10);
        f.add(t1);
        f.add (t2);
        Button b1 = new Button("ok");
        Button b2 = new Button ("limpar");
        f.add(b1);
        f.add(b2);
        f.addWindowListener(new MeuListener());
        f.setVisible(true);
    }
}

class MeuListener extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}

É só colocar em um arquivo chamado ProvaFinal.java, compilar e rodar.

Observações:

  • Removi a linha em que você desabilitava o Frame.
  • WindowAdapter é uma classe abstrata que implementa todos os métodos de WindowListener com um corpo vazio, dessa forma você só sobrescreve os que quiser.
  • MeuListener não é public, então pode ficar no mesmo arquivo que ProvaFinal.

Qualquer dúvida, é só perguntar.

K

Tyler

valeu mesmo amigo percebi que tava confuso mesmo parecia uma salada

um beijo

karlota
:grin:

K

ola Tyler!!

uma duvida só mais uma tá? vc organizou meu codigo e vc incluiu
isto:
f.addWindowListener(new [b]meuListenerl/b);

class meuListenerextends WindowsAdapter{

public void WindowClosing(WindowEvent e){

System.exit(0);

}

}

tenho que colcar o nome da classe que criei ProvaFinal no lugar do meuListener? quando coloco e compilo ele diz duplicação de nome de classes do addwindowListener(new MeuListener) e na classe que foi extendida,certo? acho que não pode repitir nomes (Duplicação), então crio outra classe que faço?
karlota

T

Olá karlota. Desculpe, mas não entendi sua pergunta.

K

ola Tyler

a pergunta foi reformulada para sua melhor compreensão ta bom ?

tenha uma Boa Noite

beijos

karlota

:grin:

R

me desculpe, mas continua confusa para mim

K

ola Boa Noite !!

tenho um problema utilizei com ajuda do nosso amigo Tyler a interface windowListener certo? so que ta ocorrendo um problema quero fazer isto:
f.addWindowListener(new MeuListener ());// e o nome minha da classe provaFinal.java Ok?ta salva desta forma OK? acontece que este codigo abaixo eu acresecentei o nome da minha classe ja criada.

class ProvaFinal extends WindowsAdapter{

//public void WindowClosing(WindowEvent e){

<a href="//System.exit">//System.exit</a>(0);

//}

//}
o compilador da um erro que não aceita  nomes iguais(quando coloco em ambas as linhas o nome da minha classe criada) ,isto é nesta linha

f.addWindowListener(new ProvaFinal ());//  repare que coloquei no nome da minha classe  e isto acontece com este:( então concluo não e e a classe criada por mim)

class Provafinalextends WindowsAdapter{

//public void WindowClosing(WindowEvent e){

<a href="//System.exit">//System.exit</a>(0);

a linha orginal e esta abaixo:

f.addWindowListener(new MeuListener());

class MeuListener extends WindowsAdapter{

public void WindowClosing(WindowEvent e){

System.exit(0);

}

aqui se refere (meuListener) em ambas linhas a classe actionListener ou ao window Listener ou a nenhum dos dois?

boa Noite a todos
agradeço
karlota

T

Continuo sem entender, mas vou tentar explicar o que eu fiz, quem sabe ajuda.

Dizer que uma classe implementa uma interface é dizer que ela possui todos os métodos declarados na interface, ou seja, a janela pode chamar o método windowClosing() em todos os seus WindowListeners pois uma vez que eles implementam a interface, é garantido que o método existe.

MeuListener é uma classe que implementa a interface WindowListener (indiretamente, pois ela estende WindowAdapter, que por sua vez implementa WindowListener), ou seja: objetos da classe MeuListener podem ser adicionados a uma janela para receber eventos relativos a janela.

O que acontece quando você chama f.addWindowListener(new MeuListener()); é o seguinte: um novo objeto do tipo MeuListener (que é um WindowListener) é criado e passado para a janela (Frame) via método addWindowListener, então a janela adiciona esse objeto ao seu cadastro de WindowListeners. Quando ocorre algum evento de janela, o método correspondente é chamado em todos os listeners registrados naquela janela.

T

Não tinha visto seu último post antes de colocar a mensagem anterior.

Você não pode ter duas classes com o mesmo nome, senão o compilador não iria saber a qual você está se referindo.

Se você quiser que a classe ProvaFinal implemente WindowListener, basta fazer com que ela estenda WindowAdapter e mover o método windowClosing para a mesma, ficando desnecessária a classe MeuListener. Nesse caso você envia uma instância de ProvaFinal para addWindowListener.

Ficaria assim:

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

public class ProvaFinal extends WindowAdapter &#123;
    public static void main&#40;String&#91;&#93; args&#41; &#123;
        Frame f = new Frame&#40;"Calculadora"&#41;;
        f.setSize&#40;200, 200&#41;;
        f.setBackground&#40;Color.gray&#41;;
        f.setLayout&#40;new FlowLayout&#40;FlowLayout.CENTER&#41;&#41;;
        Label label1 = new Label&#40;"Valor"&#41;;
        Label label2 = new Label&#40;"Resultado"&#41;;
        f.add&#40;label1&#41;;
        f.add&#40;label2&#41;;
        TextField t1 = new TextField&#40;10&#41;;
        TextField t2 = new TextField&#40;10&#41;;
        f.add&#40;t1&#41;;
        f.add &#40;t2&#41;;
        Button b1 = new Button&#40;"ok"&#41;;
        Button b2 = new Button &#40;"limpar"&#41;;
        f.add&#40;b1&#41;;
        f.add&#40;b2&#41;;
        f.addWindowListener&#40;new ProvaFinal&#40;&#41;&#41;;
        f.setVisible&#40;true&#41;;
    &#125;
    public void windowClosing&#40;WindowEvent e&#41; &#123;
        System.exit&#40;0&#41;;
    &#125;
&#125;

Não entendi a pergunta sobre o ActionListener, não tem ActionListener no código.

K

obriago Tyler pela ajuda e paciencia pelas minhas perguntas malucas, para vc ter uma ideia tevemos pouo contato em java e em FPOO e que aula de eventos foi assim 3 slides mostrando uma interface e pronto!! não estudo em faculdade, (sou formada em biologia) e agora faço curso tecnico!!

agora um bom livro para iniciantes em java e aquele de Deitel ne verdade?e le para não passar tanto vexame nas minhas perguntas e pretendo seguir Java.

um beijo
karlota

:cry:

T

Que bom que você vai continuar no java.

Um livro que eu recomendo para quem está começando é: “Aprendendo programação orientada a objetos em 21 dias”.

F

Karlota…

o Java é uma boa opção de carreira e até mesmo de diversão(porque não, né?)

Só que ue acho que vc deve adquirir uma base antes de continuar nessas aventuras. Para isso tem diversos livros de java muito bons.
Os melhores:

Thinking in JAVA - Bruce Eckel
Core Java 2 - Volume 1 - Fundamentos
JAVA - Como Programar

Escolha um destes e pau na jaca…

é só seguir em frente…

Conte com a ajuda do pessoal aqui do PJ…

té +

F

Ah… esqueci de perguntar…

VC é biologa?
E com oé que vc foi parar nesse de JAVA???

Só por curiosidade…

Criado 15 de dezembro de 2004
Ultima resposta 16 de dez. de 2004
Respostas 16
Participantes 5