JRadioButton

Olá pessoal!
Estou com uma duvidazinha… Não encontrei pelo “BUSCA”…

Como mudar a orientação do texto de um JRadioButton? direita, esquerda, cima, baixo…
Outra: Quando você deixa um JRadioButton no estado enable(false) ele muda de cor, fica meio acinzentado, como deixa-lo enable(false) sem que isso ocorra? Sei como fazer isso com JTextField mas não com JRadioButton…

Valeu pessoal! :thumbup: :thumbup: :thumbup:

e aí gqferreira?? Tudo bem?

Você pode usar o método “setHorizontalTextPosition(SwingConstants.algumaDirecao)” para mudar a posiçao do texto em relaçao ao botao

ex:

JRadioButton button = new JRadioButton("Teste"); button.setHorizontalTextPosition(SwingConstants.LEFT);//Deixa o texto a esquerda do botao button.setHorizontalTextPosition(SwingConstants.RIGHT);//Deixa o texto a direita do botao

Quanto ao enable(false) eu não sei se entendi oque você quer, mas o objetivo do botão ficar dessa maneira é para deixar claro para o usuário que não é possível clicar ali

Tudo bem Douglas…
E você??

Bom amigo… dá uma olhada nessa imagem.
Quero buscar alguns dados do usuário e mostrar em um mini formulário. Para mostrar se o usuário é casado ou não resolvi usar JRadioButton porque achei feio colocar um JTextField.
Para os JTextField’s eu consegui “mascara-los” para faze-los parecer “normal”, mas eles estão em editable(false). Com o radioButton eu não consigo fazer o mesmo. Nesse print eles não estão boloqueados, mas quando os bloqueio, ficam feios…acinzentados como todo componente bloqueado…como deixa-lo “normal”???

Ops… :oops: :oops: :oops: :oops:
Esqueci da imagem :lol: :lol: :lol:

Aqui tudo blz tb…

Tem um jeito de fazer. Você pode fazer o seguinte. Você pode colocar na escuta do evento o método setSelected(false). Aí dessa maneira toda vez que o usuário clicar no botão, ele se auto desseleciona(nem sei se essa palavra existe, hehehe :? ), dando a impressao que o botao nao pode ser selecionado

Ficaria algo assim:

[code]JRadioButton button = new JRadioButton(“Teste”);
button.addItemListener(this); //No caso de sua própria classe ser a ouvinte do evento

//etc

//Aqui você sobrescreve o método itemStateChanged
public void itemStateChanged(ItemEvent event)
{
button.setSelected(false);
}
[/code]

Eu fiz um teste aqui e deu certo. Acho que ficou do jeito que voce quer, espero ter ajudado :smiley:

Abraços!

Não entendi amigo…

Quando disparar o evento os JRadioButton’s deve ficarem des-selecionados??(des-selecionados= :hunf: :? :hunf: Deve estar errado também)
para (tentar) ajudar:

[code]
public static void busca(String username)
{
String nome,idade,casado,data;
try
{
String sql = “select * from login where user = '”+username+"’";
if (BD.getConnectionAccess())
{
BD.setResultSet(sql);
BD.resultSet.next();
nome = BD.resultSet.getString(3);
idade = BD.resultSet.getString(4);
casado = BD.resultSet.getString(5);
data = BD.resultSet.getString(14);

			if (casado.equals("Sim"))
			{
				Remover.rbSim.setSelected(true);
				Remover.rbNao.setSelected(false);
			}

			else
			{
				Remover.rbNao.setSelected(true);
				Remover.rbSim.setSelected(false);
			}
			Remover.tfDataEntrada.setText(data);
			Remover.tfIdade.setText(idade);
			Remover.tfNome.setText(nome);
			Remover.tfUSernameInfo.setText(username);
			BD.resultSet.close();

		}	
	}
	catch(SQLException ex)
	{
		JOptionPane.showMessageDialog(null,"Esse username não é cadastrado no sistema", "Username inválido", JOptionPane.WARNING_MESSAGE);
		ex.printStackTrace();
		
	}[/code]

Quando clico no botão localizar, o evento invoca esse método de outra classe que preenche o mini formulário…

Hehe, não sei se entendi direito… vamos lá…

Você gostaria que o usuário não pudesse clicar no radioButton “sim” e “não” da figura?? Só que para deixar o botão desabilitado ele fica aquele cinza. Então você gostaria que ele ficasse desabilitado só que de forma normal, certo? Do jeito que te passei, o botão ainda fica “selecionável”, mas no tratamento do evento ele des-seleciona o botão, dando a impressão que ele não pode ser selecionado. Vou deixar o código do teste que fiz aqui para você dar uma olhada. O botão deve ficar desabilitado até que o usuário realize determinadas ações para depois habilitá-lo?? Se for isso, acredito que você deva fazer uma verificação no itemStateChanged. Se o usuário ainda não completou todas as ações, então dispara o setSelected(false). Se ele já terminou, aí você trata o evento normalmente:

[code]public void itemStateChanged(ItemEvent event){

if(aindaTemCoisasAFazer)
button.setSelected(false)
else
//faz as coisas que o botao tem que fazer
}
[/code]

Abaixo o código de como fica o botão:

[code]import javax.swing.;
import java.awt.event.
;

public class TesteBotao implements ItemListener {

private JFrame frame;
private JRadioButton button;

public static void main(String [] args){
    
   TesteBotao tb = new Identificadores();
   tb.go();
}
  
public void go(){
    frame = new JFrame();
    button = new JRadioButton();
    button.setText("test");
    button.setHorizontalTextPosition(SwingConstants.LEFT);
    button.addItemListener(this);
    frame.getContentPane().add(button);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(100,100);
    frame.setVisible(true);
}

public void itemStateChanged(ItemEvent event){

    button.setSelected(false);
}

}
[/code]

Se não for isso, passa a função dos seus botões de rádio para eu ter uma idéia mais clara do que eles fazem e o porque e até quando ele devem ficar desabilitados. Assim acho que posso ter uma ideia melhor.

Abraços!

Os botões de rádio nunca ficarão “selecionáveis” e nunca terá nem um evento assoiciado a ele. Eles apenas servem para mostrar um resultado >> casado ou solteiro.

É aquele método lá que os preenche de acordo com o que consta no banco de dados.

entendi…bom, para cada botao voce pode fazer mais ou menos oque fez nos seus metodos:

//para o botao sim: if(casados.equals("sim") button.setSelected(true); else button.setSelectec(false);

//Para o botao nao a mesma coisa so que ao contrario if(casados.equals("sim")) button.setSelected(false); else button.setSelected(true);

sendo que estas comparaçoes estejam dentro do tratamento do evento, dessa forma seus valores nunca irão mudar…

sim…mas isso eu já fiz… o problema é que dessa forma você está definindo quem estará false ou true mas o usuário poderá alterar com o mouse, então bloqueio ele fica acinzenta, esse é o problema = acinzentado. Como fazer ele ficar com a aparencia de botão selecionável, liberado… estando bloqueado…

É que eu acho que não fui claro. Compila esse código abaixo e veja como ficaram os botões. Da uma olhada nos tratamentos dos eventos, acho que com o código é melhor do que eu falando.

[code]
//Compila e roda esse programa. Os botões tem que ser assim?
import javax.swing.;
import java.awt.event.
;
import java.awt.*;

public class TestaBotoes {

private JFrame frame;
private JRadioButton noButton;
private JRadioButton yesButton;
private String casados;
public static void main(String [] args){
    
   TestaBotoes tb = new TestaBotoes();
   tb.go();
}
  
public void go(){
    casados = "sim"; //Imagine que tenha buscado um "sim" no banco
    frame = new JFrame();
    
    noButton = new JRadioButton();
    noButton.setText("Nao");
    noButton.setHorizontalTextPosition(SwingConstants.RIGHT);
    noButton.addItemListener(new NoButtonHandler());
    frame.getContentPane().add(noButton, BorderLayout.WEST);
    
    yesButton = new JRadioButton("Sim");
    yesButton.setSelected(true); //Isso você ja tem no seu código
    yesButton.setHorizontalTextPosition(SwingConstants.RIGHT);
    yesButton.addItemListener(new YesButtonHandler());
    frame.getContentPane().add(yesButton, BorderLayout.EAST);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(100,100);
    frame.setVisible(true);
}

//Para deixar o código do jeito que quer, voce tem que fazer isso aqui
private class YesButtonHandler implements ItemListener{
public void itemStateChanged(ItemEvent event){
if(casados.equals(“sim”))
yesButton.setSelected(true);
else
yesButton.setSelected(false);
}
}//fim da classe yesButton

private class NoButtonHandler implements ItemListener{
public void itemStateChanged(ItemEvent event){
if(casados.equals(“nao”))
noButton.setSelected(true);
else
noButton.setSelected(false);
}
}
}[/code]

Valeu Douglas!!! Agora pudi entender e funcionou!

Valeu! :thumbup: :thumbup: :thumbup: