Gosto de programar em java, apesar de não saber muito...
Estou presentemente a fazer um programa (como hobbie) que é uma base de dados mas com janelas...
após ler alguns tutoriais e programas feitos consegui desenvolver a minha frame com os diversos paineis.
A maneira, que eu pensei ser a certã, para fazer funcionar o programa é:
Tenho a penas uma JFame. Há medida que os botões são cliclados, retiro o JPanel activo no Jframe (com a acção frame.getContentsPane().removeAll()) e adiciono o novo painel com os novos botões...
No inicio parecia que tudo estava a funcionar correctamente mas agora que estou a começar a inserir os valores deparei-me com vários problemas.
O primeiro ( e penso que o responsável por todos os outros) é que, quando carrego a primeira vez num botão ele faz correr o actionPerformed(actionEvent e) uma vez. Quando carrego pela segunda vez num botão, o actionPerformed corre duas vezes até encontrar o botão accionado, três vezes corres três vezes e assim sucessivamente... qual a razão para isto acontecer? alguém sabe?
Fica aqui um bocado do actionPerformed:
public void actionPerformed(ActionEvent event)
{
Object src = event.getSource();
if(src==buttonConsultar) Consultar();
if(src==buttonVoltarInicio) inicio();
}
Este não é o código do meu programa (pois ele é bastante grande) mas é um programa parecido, mais simples, e com o mesmo problema.
A variavel int x é só para ajudar a perceber quantas vezes ele corre o actionlistener até encontrar o botao accionado. O system.out.println() foi para conseguir ver.
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Main implements ActionListener{
static JFrame frame;
int x=0;
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JLabel labelTeste = new JLabel("Teste", JLabel.CENTER);
Pergunta
ghatien
Boa tarde
Gosto de programar em java, apesar de não saber muito...
Estou presentemente a fazer um programa (como hobbie) que é uma base de dados mas com janelas...
após ler alguns tutoriais e programas feitos consegui desenvolver a minha frame com os diversos paineis.
A maneira, que eu pensei ser a certã, para fazer funcionar o programa é:
Tenho a penas uma JFame. Há medida que os botões são cliclados, retiro o JPanel activo no Jframe (com a acção frame.getContentsPane().removeAll()) e adiciono o novo painel com os novos botões...
No inicio parecia que tudo estava a funcionar correctamente mas agora que estou a começar a inserir os valores deparei-me com vários problemas.
O primeiro ( e penso que o responsável por todos os outros) é que, quando carrego a primeira vez num botão ele faz correr o actionPerformed(actionEvent e) uma vez. Quando carrego pela segunda vez num botão, o actionPerformed corre duas vezes até encontrar o botão accionado, três vezes corres três vezes e assim sucessivamente... qual a razão para isto acontecer? alguém sabe?
Fica aqui um bocado do actionPerformed:
public void actionPerformed(ActionEvent event)
{
Object src = event.getSource();
if(src==buttonConsultar) Consultar();
if(src==buttonVoltarInicio) inicio();
}
Este não é o código do meu programa (pois ele é bastante grande) mas é um programa parecido, mais simples, e com o mesmo problema.
A variavel int x é só para ajudar a perceber quantas vezes ele corre o actionlistener até encontrar o botao accionado. O system.out.println() foi para conseguir ver.
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Main implements ActionListener{
static JFrame frame;
int x=0;
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JLabel labelTeste = new JLabel("Teste", JLabel.CENTER);
public Main(){
JPanel painel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy=1;
button1.addActionListener(this);
painel.add(button1,c);
c.gridx=0;
c.gridy=0;
c.gridwidth=2;
painel.add(labelTeste,c);
frame.getContentPane().add(painel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public void botao1(){
frame.getContentPane().removeAll();
JPanel painel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy=1;
button1.addActionListener(this);
painel.add(button1,c);
c.gridx=0;
c.gridy=0;
c.gridwidth=2;
painel.add(labelTeste,c);
frame.getContentPane().add(painel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public void botao2(){
frame.getContentPane().removeAll();
JPanel painel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy=1;
button2.addActionListener(this);
painel.add(button2,c);
c.gridx=0;
c.gridy=0;
c.gridwidth=2;
painel.add(labelTeste,c);
frame.getContentPane().add(painel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
Object src = event.getSource();
if(src==button1) botao2();
if(src==button2) botao1();
System.out.println("actionlistener "+x);
x++;
}
public static void start(){
JFrame.setDefaultLookAndFeelDecorated(true);
Main start2 = new Main();
}
public static void main(String[] args)
{
frame = new JFrame("Hanovia");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run(){
start();
}
});
}
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.