Comandos para JButton

Olá a todos, sou novo aqui e em programação JAVA, ando estudando atravez de uma apostila que ja terminei e agora começo a inventar programas para praticar. Minha duvida seria em qual comando devo utilizar para que um JButton abra uma nova janela de uma classe executavel, vou explicar melhor: Estou fazendo um programa bem simples de cadastro de clientes sendo que também quero que ele atravez do botão “RECLAMAÇÕES” abra um janela para que eu possa incluir e gavar em BD a reclamação do cliente. Teria como fazer isso? Será que alguem pode me dar um força? Valeu desde já!

Tu diz abrir um programa terceiro?
Se sim, deves usar a classe http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html
Para executar esse processo externo.

Senão, basta o botão abrir um JDialog com a sua tela de “RECLAMAÇÕES”

É isso mesmo quero que aparti de um programa ja aberto o JButton chame outro que seria “Reclamações”. Assim o primeiro programa (principal) tem uma classe executora e outras que o integram, por exemplo, a classe cadastroCliente (principal) chama a classe BotaoPainel onde tenho os comendos de ADICIONAR, CONSULTAR, APAGAR e RECLAMAÇÕES. Para os butões eu tenho o seguinte comendo:

//BotaoPainel.JAVA

import java.awt.;
import java.awt.event.
;
import java.sql.;
import javax.swing.
;

public class BotaoPainel extends JPanel
{
private JButton consultar, adicionar, recalamacao, limpar, apagar;

 public BotaoPainel (Connection c, MontaTela f, JTextArea o)
  {
     setLayout (new GridLayout (1,5));
	 
	 adicionar = new JButton ("Adicionar");
	 adicionar.addActionListener (new adicionaRegistro (c,f,o));
	 add (adicionar);
	 
	 consultar = new JButton ("Consultar");
	 consultar.addActionListener (new consultarRegistro (c,f,o));
	 add (consultar);
	 
	 apagar = new JButton ("Apagar");
	 apagar.addActionListener (new apagarRegistro (c,f,o));
	 add (apagar);

recalamacao = new JButton (“Reclamações”);
recalamacao.addActionListener (new reclaCliente (c,f,o));
add (recalamacao);

  }

}

Porem as classes adicionaRegistro , consultarRegistro , apagarRegistro , são classes que não executam ou seja não tem o public static void main (String args[]) já a classe reclaCliente tem, e quando tento copilar pelo prompt da erro:

BotaoPainel.java:29:cannot find symbol
symbol : constructor ReclaCliente(java.sql.Connection,MontaTela,javax.swing.JTextArea)
location: class ReclaCliente
raclamacao.addActionListener (new ReclaCliente (c,f,o));

Tem como fazer isso funcionar? Valeu desde já!

Bom, tem bastante coisas swing que vc deve aprender antes… vou tentar te situar um pouco.

A tela que está tentando abrir não precisa ter um ‘void main’.
Basta iniciar ela (com new), adicionar ela em algum container/layout (por exemplo JDialog ,JFrame, BorderLayout,…)
E mostrar isso na tela, com setVisible(true) por exemplo. Pronto, vai abrir a tela.

Sobre a chamada no botão, vc precisa associar um ActionListener, que então será chamado quando ocorrer
a ação do botão. Assim:

button.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		// aqui vc deve abrir a outra tela
		JDialog dialog = new JDialog();
		dialog.setContentPane(new TelaReclamacao());
		dialog.setVisible(true);
	}
});

E ali, onde está indicado, escolha como vai abrir essa tela. Coloquei um exemplo rapidamente para abrir
num dialog, mas fiz na mão agora e vc precisa validar.

Por fim, tenha em mente que swing não é simples, há N formas de se fazer determinada coisa.
Então te aconselho a estudar bastante antes, aqui
por exemplo http://java.sun.com/docs/books/tutorial/uiswing/

Valeu Fabio pela força que vc vem me dando, realmente tenho que estudar muito e agradeço o link que me deu certamente estudarei. O que eu faço é criar novos programas utilizando codigos já escritos (na apostila do curso) nessa apostila tem um código que é um JFrame:

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

public class df extends JFrame
{
public df()
{
setTitle (“Demenstração de uma janela JFrame”);
setLocation (50,50); //coordenada x e y em pixels (localização)
setSize (320,160); //coordenada x e y em pixels (tamanho da janela)
}

	   public static void main ( String args [] )
	     {
		     df janela = new df();
			 janela.show();
		 }

}

Como eu deveria fazer? Tirar o public static void main ( String args [] ) e colocar public static new ( String args [] ), no caso do botão eu devo colocar entam assim:


public class BotaoPainel extends JPanel
{
private JButton consultar, adicionar, recalamacao, limpar, apagar;

 public BotaoPainel (Connection c, MontaTela f, JTextArea o)
  {
     setLayout (new GridLayout (1,5));
	 
	 adicionar = new JButton ("Adicionar");
	 adicionar.addActionListener (new adicionaRegistro (c,f,o));
	 add (adicionar);
	 
	 consultar = new JButton ("Consultar");
	 consultar.addActionListener (new consultarRegistro (c,f,o));
	 add (consultar);
	 
	 apagar = new JButton ("Apagar");
	 apagar.addActionListener (new apagarRegistro (c,f,o));
	 add (apagar);

recalamacao = new JButton (“Reclamações”);
recalamacao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// aqui vc deve abrir a outra tela
JDialog dialog = new JDialog();
dialog.setContentPane(new TelaReclamacao());
dialog.setVisible(true);
add (recalamacao);

  }

}

Obrigado pela paciencia e força!