Evento não funciona

6 respostas
V

Alquém poderia me dizer porque o evento em ControleDistribuidor onde coloquei um System.out.println não tá funcionando???
segue o código abaixo dos 2 arquivos

----------Distribuidor.java-----------------------------------
package apresentacao;

import java.awt.Color;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.Insets;
import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

public class Distribuidores extends javax.swing.JPanel
{

private JButton BLimpar;
private JButton BConfirmaDis;
public Distribuidores()

{

GridBagLayout thisLayout = new GridBagLayout();

this.setBackground(Color.LIGHT_GRAY);

thisLayout.columnWeights = new double[] { 0.1, 0.1 };

thisLayout.columnWidths = new int[] { 7, 7 };

thisLayout.rowWeights = new double[] { 0.1, 0.1, 0.1, 0.1, 0.1,

0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 };

thisLayout.rowHeights = new int[] { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,

7, 7, 7 };

this.setLayout(thisLayout);
[color="red"]  BConfirmaDis[/color] = new JButton();
        this.add(BConfirmaDis, new GridBagConstraints(0, 12, 1, 1, 0.0,
                0.0, GridBagConstraints.LINE_END,
                GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
        BConfirmaDis.setText("OK");
        BConfirmaDis.setFont(new java.awt.Font("Arial Black", 1, 16));

        BLimpar = new JButton();
        this.add(BLimpar, new GridBagConstraints(1, 12, 1, 1, 0.0, 0.0,
                GridBagConstraints.CENTER, GridBagConstraints.NONE,
                new Insets(0, 0, 0, 0), 0, 0));
        BLimpar.setText("Limpar Campos");
        BLimpar.setFont(new java.awt.Font("Arial Black", 1, 14));
    
}


public JButton [color="red"]getBConfirmaDis() [/color]  {
    return BConfirmaDis;
}
public void setBConfirmaDis(JButton confirmaDis)
{
    BConfirmaDis = confirmaDis;
}
public JButton getBLimpar()
{
    return BLimpar;
}
public void setBLimpar(JButton limpar)
{
    BLimpar = limpar;
}
    }
public static void main(String[] args)

{

JFrame frame = new JFrame();

frame.getContentPane().add(new Distribuidores());

frame.pack();

frame.show();

}

}

---------------------ControleDistribuidor.java-------------------------------

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import apresentacao.Distribuidores;

public class ControleDistribuidor implements ActionListener

{

//  MenuPrincipal menuPrinc = new MenuPrincipal();

Distribuidores Distr = new Distribuidores();

//PainelInicial In = new PainelInicial();
public ControleDistribuidor()
{
    Distr.getBConfirmaDis().addActionListener(this);
}

public void actionPerformed(ActionEvent e)
{
   [color="red"]if(e.getSource() == Distr.getBConfirmaDis())
   {
       System.out.println("Li o botão");
       //nãooooooooooooo tá funcionando
   }[/color]
   

}
public static void main(String[] args)
{
    ControleDistribuidor cd = new ControleDistribuidor();
}

}

6 Respostas

L

Faiz assim:

No distribuidor.java

...
Listener listener = new ControleDistribuidor();
botao.addActionListener(listener);
botao.setActionCommand("teste");
...

E no controledistribuidor.java

...
public void actionPerformed(ActionEvent event) {
        if(event.getActionCommand().equals("teste") {
                System.out.println("teste");
        }
}
...

Eu acho que deste jeito fica mais facil

Falo

V

Obrigado pela resposta funcionou direitinho ali, mas parece que não funciona para um JMenuItem

olha o que fiz: porque não funciona

---------------------------MenuPrincipal.java--------------------

public class MenuPrincipal extends javax.swing.JFrame

public ActionListener listener2;

public MenuPrincipal()

{

M1 = new JMenu(Distribuidores);

Barra = new JMenuBar();

M11 = new JMenuItem(Novo);
setJMenuBar(Barra);
    Barra.add(M1);
    
    M1.add(M11);
    
    
    listener2 = new ControleDistribuidor(); 
    M11.addActionListener(listener2); 
    M11.setActionCommand("nova");

--------------ControleDistribuidor.java------------------------

public class ControleDistribuidor implements ActionListener
{

public void actionPerformed(ActionEvent evt)
{
          
    if(evt.getActionCommand().equals("nova"))
    {
        System.out.println("teste nova"); 
    }
}
L

Não sei se esse é o erro, mas na classe MenuPrincipal, tu esqueceu de abrir as chaves({})!

Falo

V

Consegui resolver o erro mas deu esse pau aki

-------Distribuidor---------------------------

public class Distribuidores extends javax.swing.JPanel

public Distribuidores()

{

public ActionListener listener;

listener = new ControleDistribuidor();
CampoNome = new JTextField();

this.add(CampoNome, new GridBagConstraints(1, 2, 1, 1, 0.0,

0.0, GridBagConstraints.LINE_START,

GridBagConstraints.NONE, new Insets(0, 5, 0, 0), 0, 0));

CampoNome.setPreferredSize(new java.awt.Dimension(200, 20));
BConfirmaDis = new JButton();

this.add(BConfirmaDis, new GridBagConstraints(0, 12, 1, 1, 0.0,

0.0, GridBagConstraints.LINE_END,

GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));

BConfirmaDis.setText(OK);

BConfirmaDis.setFont(new java.awt.Font(Arial Black, 1, 16));
BConfirmaDis.addActionListener(listener);
        BConfirmaDis.setActionCommand("teste");
--------------------------------COntroleDIstribuidor--------------------------

public class ControleDistribuidor implements ActionListener

{

MenuPrincipal menuPrinc;

//  ControlePrincipal contPrinc = new ControlePrincipal();

Distribuidores Distr2;

public String texto = new String(nada);
public ControleDistribuidor()
{
   
}
		
		
public void actionPerformed(ActionEvent evt)
{    
    
    if(evt.getActionCommand().equals("teste"))
    {
      //  menuPrinc = new MenuPrincipal();
        Distr2 = new Distribuidores();
        System.out.println("teste nova"); 
        texto = Distr2.getCampoNome().getText();
       [color="red"]System.out.println("Campo nome é: " + texto); [/color]
        
    }
}

Não aparece nada, e se eu comentar essa linha texto = Distr2.getCampoNome().getText();
ai sim aparece o valor que inicializei nessa mesma classe…

L

Cara você está errando nesta linha:

public class Distribuidores extends javax.swing.JPanel

Fica:

public class Distribuidores extends javax.swing.JPanel {

E no final fecha a chave }
Falo

V

Não cara pode deixar que não iria esquecer uma coisa dessa, é que copiando e colando aki não coloquei essas paradas que são obvias… acho que não tá acessando o evento

Criado 26 de fevereiro de 2005
Ultima resposta 1 de mar. de 2005
Respostas 6
Participantes 2