Spiegazioni su JRadioButton

di il
4 risposte

Spiegazioni su JRadioButton

Salve a tutti... ho scritto questo codice per provare il funzionamento di JRadioButton.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class ProvaJRadioButton extends JFrame
{
	public ProvaJRadioButton() 
	{
		super("Prova");
		setSize(150, 150);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel();
		add(panel);
		
		final JRadioButton bott1 = new JRadioButton("prova 1 ");
		final JRadioButton bott2 = new JRadioButton("prova 2");
		
		ButtonGroup gruppo = new ButtonGroup();
		gruppo.add(bott1);
		gruppo.add(bott2);
		
		panel.add(bott1);
		panel.add(bott2);
		
		final JButton bottone = new JButton("Prova");
		panel.add(bottone);
		
		class ActionListenerBotton implements ActionListener
		{
			public void actionPerformed(ActionEvent event)
			{
				ActionListener scelta = null;
				if(bott1.isSelected())
					scelta = new ActionLister1();
				else if(bott2.isSelected())
					scelta = new ActionLister2();
				bottone.addActionListener(scelta);
			}
		}
		
		bottone.addActionListener(new ActionListenerBotton());

		setVisible(true);
	}
	
	class ActionLister1 implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			JFrame frame = new JFrame("Prova 1");
			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			frame.setSize(150, 100);
			frame.setVisible(true);
		}
	}
	
	class ActionLister2 implements ActionListener
	{
		public void actionPerformed(ActionEvent event)
		{
			JFrame frame = new JFrame("Prova 2");
			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			frame.setSize(150, 100);
			frame.setVisible(true);
		}
	}
}

class test
{
	public static void main(String arg[])
	{
		ProvaJRadioButton prova = new ProvaJRadioButton();
	}
}
Questo codice mi da due problemi:
-il pulsante prova non mi da nessun risultato con un solo clic, lo devo premere per due volte per farmi dare un risultato;
-il secondo problema avviene quando cambio input sui due bottoni; per esempio se nella prima prova premo prova1, e nella seconda premo prova2, il programma mi apre prova1 e prova2 insieme, anche più volte facendo più prove.
Ringrazio tutti in aticipo per le spiegazioni che mi darete

4 Risposte

  • Re: Spiegazioni su JRadioButton

    barty93 ha scritto:


    			public void actionPerformed(ActionEvent event)
    			{
    				ActionListener scelta = null;
    				if(bott1.isSelected())
    					scelta = new ActionLister1();
    				else if(bott2.isSelected())
    					scelta = new ActionLister2();
    				bottone.addActionListener(scelta);
    			}
    La parte "contorta" (cioè fumosa e con poco senso) è quella che ho appena quotato.
    Al primo click su Prova registri, sempre su Prova, un listener che dipende dal radio selezionato. E se "giochi" un po' con i radio e Prova, alla fine hai che sia ActionLister1 che ActionLister2 sono entrambi registrati su Prova!! E quindi un click su Prova attiverà entrambi.

    Se ad ogni click su Prova vuoi semplicemente scegliere quale frame aprire in base al radio selezionato, basta 1 listener solo su Prova. Nel actionPerformed:

    se bott1 selezionato, apri frame 1
    altrimenti se bott2 selezionato, apri frame 2

    Stop, tutto qui.
  • Re: Spiegazioni su JRadioButton

    Quindi se ho capito bene ActionListener 1 e 2 non servono?? Devo semplicemente aprire i frame giusto??
  • Re: Spiegazioni su JRadioButton

    barty93 ha scritto:


    Quindi se ho capito bene ActionListener 1 e 2 non servono?? Devo semplicemente aprire i frame giusto??
    Sì, giusto.
  • Re: Spiegazioni su JRadioButton

    Perfetto grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte