Dar utilidade à botões

4 respostas
Bruno_M_Gasparotto

Olá!

Estou começando agora a mexer com interface gráfica (comecei a 2h pra ser mais exato).

Tenho uma classe "Agenda" que contém a classe main, nessa classe há botoes de "Cadastro", "Ediçao" "Exclusão" e "Pesquisa", quero fazer com que esses botões instanciem objetos da minha classe "Contato", que contém os atributos e métodos de manuseio de contatos. Como faço isso? Procurei alguns tutos na net e achei meio vago por ter poucos comentários no código.

Código da classe Agenda:

import javax.swing.*;
import java.awt.*;  

public class Agenda {  
	public static void main(String[] args) {
		// Cria a janela principal da Agenda
		JFrame janelaPrincipal = new JFrame("Agenda");  
		janelaPrincipal.setBounds(150,100,800,400);    
		janelaPrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
		
		// Define a organização do frame janelaPrincipal
		FlowLayout flow = new FlowLayout();
		Container caixa = janelaPrincipal.getContentPane();
		caixa.setLayout(flow);
		
		// Cria os botoes de cadastro, exclusão e edição de contatos
		caixa.add(new JButton("Cadastrar Contato"));
		caixa.add(new JButton("Excluir Contato"));
		caixa.add(new JButton("Editar Contato"));
		
		// Escreve, cria a caixa de texto e o botão ok do objeto Pesquisa
		JLabel labelDePesquisa = new JLabel ("Pesquisar:");
		caixa.add(labelDePesquisa);
		JTextField campoDePesquisa = new JTextField(15);
		caixa.add(campoDePesquisa);
		caixa.add(new JButton("Ok"));
		
		// Exibe a janela
		janelaPrincipal.setVisible(true);
	}  
}

classe Contato ainda estou fazendo, pois acho que primeiro devo resolver a Agenda pra continuar com ela, mas segue o esboço com os atributos pra terem idéia do que ela vai fazer:

public class Contato {
	String nome;
	String sobrenome;
	String empresaDoContato;
	String telefoneComercial;
	String telefoneCelular;
	String email;
	String endereco;
	
	// Cadastra novo contato
	boolean cadastra() {

4 Respostas

ViniGodoy

Dica: Abra dúvidas de interface gráfica no fórum de interface gráfica, não do de Java Básico. Seu tópico foi movido.

Para fazer o que você quer, o primeiro passo é criar separadamente seus JButtons:

Isso porque você terá que associar mais propriedades a ele, com um listener de eventos. Esse listener é um objeto que implementa a interface ActionListener, que é chamada sempre que um botão é pressionado. Existem diversos tipos de listeners diferentes, para os diferentes tipos de eventos.

Ali sim, você irá fazer o que seu botão tem que fazer:

JButton btnCadastro = new JButton("Cadastrar Contato"); btnCadastro.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { JOptionPane.showMessageDialog(null, "Parabéns! Você clicou no botão de cadastro!"); } });

Normalmente, não criamos todo código das telas no main, como você fez. Cada janela será uma classe separada, que herda de JFrame.
E a criação da janela é feita dentro do construtor. Apenas o setVisible(true) fica fora do construtor.

Bruno_M_Gasparotto

ViniGodoy:

Normalmente, não criamos todo código das telas no main, como você fez. Cada janela será uma classe separada, que herda de JFrame.
E a criação da janela é feita dentro do construtor. Apenas o setVisible(true) fica fora do construtor.

inclusive a janela principal? o objeto era eu definir mesmo as janelas dos objetos de cadastro fora da main, vou tentar implementar!

vlw a dica e a ajuda, e da próxima vez eu crio no lugar certo. jajá dou feedback aki.

edit:

ta dando certo, vlw cara! mas vou tentar refazer meu código usando suas dicas pras janelas.

ViniGodoy

Sim. Inclusive a janela principal. O main fica resumido a:

public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { public void run() { new JanelaPrincipal().setVisible(true); } }); }

Bruno_M_Gasparotto

Valeu cara! Vou tentar implementar dessa forma.

Obrigado.

Criado 10 de fevereiro de 2012
Ultima resposta 13 de fev. de 2012
Respostas 4
Participantes 2