botao5.addActionListener (new ActionListener (){ //inclui o aluno na turma q n estiver cheia
public void actionPerformed(ActionEvent e)//so exibe as turmas q ainda podem inserir alunos
{
try {
conexao = conecta.conectabanco();
comando = conexao.createStatement();
}
catch(Exception e1) {
JOptionPane.showMessageDialog(null, "Erro na conexão com o banco");
}
for(int i=0;i<ck.length;i++)
if(ck[i]!=null)
{
try {
resultado = comando.executeQuery("select Id from aluno where nome='"+t0.getText()+"' and data_nascimento='"+t1.getText()+"'");
resultado.next();
z=resultado.getObject(1).toString();
if(z!=null )
{
// System.out.println("antes de usar o addmouselistener");
//
// ck[i].addMouseListener(new MouseListener() {
//
//
// public void mouseReleased(MouseEvent e) {
// //habilita();
// System.out.println("released");
//
// }
//
// public void mousePressed(MouseEvent e) {
// //habilita();
// System.out.println("pressed");
// }
//
// public void mouseExited(MouseEvent e) {
// //habilita();
// System.out.println("exited");
//
// }
//
// public void mouseEntered(MouseEvent e) {
// //habilita();
// System.out.println("entered");
//
// }
//
// public void mouseClicked(MouseEvent e) {
// java.awt.EventQueue.invokeLater (new Runnable () {
// public void run () {
// new modulos ().setVisible(true);
// }
// });
// System.out.println("clicked");
//
// }
//
// });
ck[i].addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent e) {
System.out.println (e);
if (e.getButton() == MouseEvent.BUTTON3) {
java.awt.EventQueue.invokeLater (new Runnable () {
public void run () {
System.out.println("dentro do metodo q chama a class modulo");
new modulos ().setVisible(true);
}
});
}
}
});
if(ck[i].isSelected())
{
comando.executeUpdate("insert into disciplina_modulo_aluno (disciplina,rc_aluno) values ('" + ck[i].getText() + "','" + z + "')" );
JOptionPane.showMessageDialog(null, "As disciplinas foram inseridas com sucesso!");
}
}
}
catch(Exception e1) {
JOptionPane.showMessageDialog(null, "Erro ao inserir disciplinas!!");
e1.printStackTrace();
}
}
}
});
Problemas com mouselistener!
5 Respostas
Num checkbox, não se usa MouseListener, a menos que você queira usar alguma coisa muito específica. Vou dar um exemplo bem simples.
Normalmente você usa actionListener. Em alguns casos, você pode usar itemStateChanged. Tem gente que usa stateChanged se quer inspecionar tudo que ocorre dentro do frame, o que provavelmente não é seu caso. Você só usa mouseListener em último caso, já que é muito compilcado fazer isso funcionar direito (principalmente do jeito que você quer, que é mostrar uma caixa de diálogo).
package guj;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ExemploJCheckBox extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel pnlBotoes = null;
private JButton btnOK = null;
private JPanel pnlCheckboxes = null;
private JCheckBox chkbox001 = null;
private JCheckBox chkbox002 = null;
private JCheckBox chkbox003 = null;
private JPanel getPnlBotoes() {
if (pnlBotoes == null) {
pnlBotoes = new JPanel();
pnlBotoes.setLayout(new FlowLayout());
pnlBotoes.add(getBtnOK(), null);
}
return pnlBotoes;
}
private JButton getBtnOK() {
if (btnOK == null) {
btnOK = new JButton();
btnOK.setText("OK");
}
return btnOK;
}
private JPanel getPnlCheckboxes() {
if (pnlCheckboxes == null) {
pnlCheckboxes = new JPanel();
pnlCheckboxes.setLayout(new BoxLayout(getPnlCheckboxes(), BoxLayout.Y_AXIS));
pnlCheckboxes.add(getChkbox001(), null);
pnlCheckboxes.add(getChkbox002(), null);
pnlCheckboxes.add(getChkbox003(), null);
}
return pnlCheckboxes;
}
/**
* Usa actionPerformed (recomendado)
*
* @return javax.swing.JCheckBox
*/
private JCheckBox getChkbox001() {
if (chkbox001 == null) {
chkbox001 = new JCheckBox();
chkbox001.setText("Checkbox 001 - actionPerformed");
chkbox001.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("checkbox 001: actionPerformed()");
}
});
}
return chkbox001;
}
/**
* Usa itemStateChanged
*
* @return javax.swing.JCheckBox
*/
private JCheckBox getChkbox002() {
if (chkbox002 == null) {
chkbox002 = new JCheckBox();
chkbox002.setText("Checkbox 002 - itemStateChanged");
chkbox002.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent e) {
System.out.println("checkbox 002: itemStateChanged()"); // TODO Auto-generated Event stub
// itemStateChanged()
}
});
}
return chkbox002;
}
/**
* Usa stateChanged: isto dispara muitas vezes seguidas, portanto não é aconselhado, a menos que você saiba o que
* está fazendo.
*
* @return
*/
private JCheckBox getChkbox003() {
if (chkbox003 == null) {
chkbox003 = new JCheckBox();
chkbox003.setText("Checkbox 003 - stateChanged");
chkbox003.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
System.out.println("checkbox 003: stateChanged()");
}
});
}
return chkbox003;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ExemploJCheckBox thisClass = new ExemploJCheckBox();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public ExemploJCheckBox() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("Exemplo JCheckBox");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
jContentPane.add(getPnlCheckboxes(), BorderLayout.CENTER);
}
return jContentPane;
}
}
Mais uma coisa. Se quiser, ao clicar em um checkbox, que o comportamento seja diferente se clicar com um outro botão (é isso que você quer fazer?) então isso é possível. Vou modificar o exemplo dado.
oi entanglement
na verdade o q eu qr fazer é clicar em uma checkbox e abrir uma outra tela
isso é possivel?
bah obrigada pelas explicações e pelo exemplo ja me tirou algumas duvidas
=]
Para abrir uma outra tela, o que é bem simples e é o que você quer, basta você substituir o "System.out.println (“Checkbox 001 - actionListener”) " do exemplo que eu dei, pelo código para abrir a outra tela.
(Realmente, eu tentei ver se era fácil acionar alguma coisa apertando o botão direito (em vez do esquerdo) quando fosse clicar no checkbox, e não foi muito fácil; para o que você quer, acho que não precisa ainda (eu na verdade nunca vi uma aplicação que fizesse uma coisa diferente do normal se você clicasse em um checkbox com o botão direito em vez do esquerdo). Entretanto, você fazer alguma outra coisa, se você clicar com o botão esquerdo mas também com uma tecla Control ou Shift ou Alt pressionada ao mesmo tempo, é bem mais fácil. )