JTextField e JCheckBox

11 respostas
R

porque dentro de uma inner class :

limpar.addActionListener( 
new ActionListener() 
{ 
public void actionPerformed( ActionEvent event ) 
{ ...........
txtitens.setText("0");  // funciona
checkBox.setSelected(false); // não funciona
botao.setEnabled(false); // não funciona

não consigo atribuir propriedades à JCheckbox e nem à JButton, mas JTextField sim, porque?

11 Respostas

cv1

Qual a sua definicao pra “nao funciona”, nesse caso?

R

Para o objeto Text o valor 0 é atribuido, mas para os objetos check e button qualquer valor tanto true como false nao funciona.

C

Dá uma olhada na declaração do teu jtextfield, jcheckbox e do teu jbutton. Por exemplo o teu jtext pode estar declarado como final.

cv1

cecaldas, declarar ou nao como final nao muda nada nesse caso.

Rogerio, ja tentou passar pelo codigo num debugger?

C

cv:
cecaldas, declarar ou nao como final nao muda nada nesse caso.

Foi mal, confundi as coisas. :oops:

R

Não, mas não vejo vantagem, pois a linha acima que é do JText funciona.
Mas tenho mais um informação, fora da inner class, no momento da declaração do checkBox, ele funciona:

JCheckBox checkBox = new JCheckBox(action);
checkBox.setBorder(null);
checkBox.setSelected(true); // por exemplo iniciar com "tick"
this.getContentPane().add(checkBox);

aqui funciona, mas dentro da inner class, não, e o pior não ocorre nenhuma exception

R

o pior é o seguinte ele me retorna true, mas na tela não aparece o “tick”

boolean c = checkBox.isSelected();
System.out.println(c); // aparece false
checkBox.setSelected(true);
boolean c2 = checkBox.isSelected();
System.out.println(c2);  // aparece true

o que poderia ser, já coloquei até repaint() ?

keller

tenta um validate() ou updateUI()…
em certas ocasioes setVisible(false/true); resolve…

gui. :wink:

R

descobri, mas agora tenho outro problema, tenho uma declaraçao no inicio do programa:

JCheckBox checkBox = new JCheckBox("Não Enviar Agora",null,false);

depois da inner class tenho:

JCheckBox checkBox = new JCheckBox(action);

para funcionar um método quando clico no checkBox

tirei este com (action) e passou a funcionar, mas quando clico não funciona mais meu método, onde gravo uma informação na base de dados, o qual antes funcionava, o que pode ser?

R

método action:

Action action = new AbstractAction("Não Enviar Agora") {
public void actionPerformed(ActionEvent evt) {
if (txtstatus.getText().equals("")){
}else{
JCheckBox cb = (JCheckBox)evt.getSource();
boolean isSel = cb.isSelected();
if (isSel) {
// Selecionou
//Grava na Tabela Pedidos
try{
//Grava Dados no Banco de Dados (Pedido aguardando Liberação)
new GravaPedidos(Integer.valueOf(txtnroped.getText()),"P");
}catch(Exception etemp){}
} else {
// Deselecionou
//Grava na Tabela Pedidos
try{
//Grava Dados no Banco de Dados (Libera Pedido para Envio)
new GravaPedidos(Integer.valueOf(txtnroped.getText()),"N");
}catch(Exception etemp){}
}
}
}
};
R

Resolvi, criei um observer e uma classe interna

class TrataCheckBox	implements ActionListener {
public void actionPerformed(ActionEvent e){
.......

retirando o action

TrataCheckBox trataCheckBox = new TrataCheckBox();
checkBox.addActionListener(trataCheckBox);
//JCheckBox checkBox = new JCheckBox(action);

valeu agora está tudo OK

Criado 10 de junho de 2005
Ultima resposta 14 de jun. de 2005
Respostas 11
Participantes 4