Ir para conteúdo
Fórum Script Brasil

ghatien

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por ghatien

  1. 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();

    }

    });

    }

    }

×
×
  • Criar Novo...