Jump to content
Sign in to follow this  
D3POD

RadioButton

Recommended Posts

D3POD

Olá a todos, como é que posso colocar 4 ou 5 jradiobutton e colocar a funcionar de maneira a que nunca possa estar mais que 1 checked?

Cumprimentos,

Diogo Lamego

Share this post


Link to post
Share on other sites
D3POD

Peço desculpa entretanto já resolvi :)

coloquei isto em no código de cada jradiobutton:

boolean check1 = true;
 if (check1)
 {
	 jRadioButton1.setSelected(true);
	 jRadioButton2.setSelected(false);

 }

 else
 {
	 jRadioButton2.setSelected(true);
	 jRadioButton1.setSelected(false);

Já agora, se eu tiver o 1º selecionado faço o calculo e no final ele mantem nesse, mas se for com a 2ª opção no final ele volta para a 1ª... alguém me sabe explicar porque acontece isto?

Edited by D3POD

Share this post


Link to post
Share on other sites
eatg75

Penso que precisas de criar uma JRadioButtonGroup (ou algo equivalente em Swing, que me falha

a memoria ao respeito do nome da classe em concreta) e adicionas cada um desses JRadioButton's

ao JRadioButtonGroup, assim o evento Checked em qualquer JRadioButton sera mutualmente exclusivo

a todos os JRadioButton que pertencam a esse grupo.

Procura por JRadioButton na documentacao da tua JDK para mais informacoes, que certamente hao

de falar que e possivel agrupar um conjunto de JRadioButton num grupo logico.


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Share this post


Link to post
Share on other sites
Knitter

Adiciona todas as instâncias de JRadioButton que queres que funcionem em conjunto a um ButtonGroup.

JRadioButton jrb1 = new JRadioButton("Opção 1);
JRadioButton jrb2 = new JRadioButton("Opção 2);
ButtonGroup grupo = new ButtonGroup();
grupo.add(jrb1);
grupo.add(jrb2);

Edited by Knitter

Share this post


Link to post
Share on other sites
D3POD

Adiciona todas as instâncias de JRadioButton que queres que funcionem em conjunto a um ButtonGroup.

JRadioButton jrb1 = new JRadioButton("Opção 1);
JRadioButton jrb2 = new JRadioButton("Opção 2);
ButtonGroup grupo = new ButtonGroup();
grupo.add(jrb1);
grupo.add(jrb2);

adicionei um buttongroup e ficou assim:

buttongroup1.add (jRadioButton1);
buttongroup1.add (jRadioButton2);

mas continua a dar para selecionar os dois ao mesmo tempo :P

Share this post


Link to post
Share on other sites
Knitter

Então tens mais código a alterar o estado dos botões. Um ButtonGroup garante que não mais que um botão está seleccionado a cada momento, é o ButtonGroup que trata de tudo sozinho. Se usares um ButtonGroup não precisas, aliás, não podes ter outro código a controlar a selecção.

Share this post


Link to post
Share on other sites
D3POD

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {										

    jTextField2.setText(null);
    double preco = Double.parseDouble(jTextField1.getText());
    boolean bool = true;
    Double taxa;

    boolean tax = true;


    //grupo dos RadioButton

    buttonGroup1.add(jRadioButton1);
    buttonGroup1.add(jRadioButton2);


    if (bool)
   {
	   jRadioButton1.setSelected(true);

	   taxa = Double.parseDouble(jRadioButton1.getText());

   }
	 else
   {
	   jRadioButton2.setSelected(true);

	   taxa = Double.parseDouble(jRadioButton2.getText());
   }

   jTextField2.setText(String.valueOf(preco * taxa));
    jTextField1.setText(null);

   }									   

este é o código que tenho... com este código está a deixar que eu coloque os dois radiobutton activos ao mesmo tempo...

Share this post


Link to post
Share on other sites
Knitter

Estás a misturar parte da solução antiga com parte do código novo. Uma correcção ao que tens agora, e simplificação, será:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
 jTextField2.setText(null);
 double preco = Double.parseDouble(jTextField1.getText());
 boolean bool = true;
 Double taxa;

 if (bool) { //Suponho que queiras ver qual dos dois botões está seleccionado...
	 taxa = Double.parseDouble(jRadioButton1.getText());
 } else {
// atenção que deves validar o input do utilizador, isto pode lançar uma excepção ao tentar converter uma String
	 taxa = Double.parseDouble(jRadioButton2.getText());
 }

jTextField2.setText(String.valueOf(preco * taxa));
jTextField1.setText(null);
}									

O código seguinte é feito quando crias os botões, se o adicionares onde estavas a adicionar não vai fazer nada. Idealmente adicionarias os botões ao grupo antes de os adicionares à vista (JPanel, JFrame, etc), logo após os teres iniciado com os valores que pretendes e antes da aplicação se tornar visível:

buttonGroup1.add(jRadioButton1)
buttonGroup1.add(jRadioButton2);

Já agora, os botões, menus, campos de texto, etc, são também variáveis a que deves dar nomes adequados, coisas com "jTextField1" não são de grande utilidade ;)

Edited by Knitter

Share this post


Link to post
Share on other sites
D3POD

Olá, obrigado pela super ajuda :D

Em relação aos nomes das variáveis é algo a corrigir, em todos os programas que já fiz faço sempre isso, mas neste como ainda é muito de iniciante estava a deixar para depois de resolver o problema :)

Em relação então ao buttongroup já percebi qual é o problema, e já o resolvi :D

muito obrigado mesmo.

agora vou apetrechar isto

Um abraço

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.