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:
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!