Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema JRadioButton

  1. #1

    Problema JRadioButton

    Creo questa radiobutton in questo modo :

    codice:
    public class prova extends JPanel
    implements ActionListener {
        int sc;
    	static String br1 = "1. Avviare una nuova partita";
        static String br2 = "2. Caricare una partita salvata";
        static String br3 = "3. Storico partita";
        static String br4 = "4. Esci";
     
        JLabel picture;
    
        public prova() {
            super(new BorderLayout());
    
            JRadioButton b1Button = new JRadioButton(br1);
            b1Button.setMnemonic(KeyEvent.VK_B);
            b1Button.setActionCommand(br1);
            b1Button.setSelected(true);
    
            JRadioButton b2Button = new JRadioButton(br2);
            b2Button.setMnemonic(KeyEvent.VK_C);
            b2Button.setActionCommand(br2);
    
            JRadioButton b3Button = new JRadioButton(br3);
            b3Button.setMnemonic(KeyEvent.VK_D);
            b3Button.setActionCommand(br3);
    
            JRadioButton b4Button = new JRadioButton(br4);
            b4Button.setMnemonic(KeyEvent.VK_R);
            b4Button.setActionCommand(br4);
    
    
            ButtonGroup group = new ButtonGroup();
            group.add(b1Button);
            group.add(b2Button);
            group.add(b3Button);
            group.add(b4Button);
            
           
            b1Button.addActionListener(this);
            b2Button.addActionListener(this);
            b3Button.addActionListener(this);
            b4Button.addActionListener(this);
    
    
    
            JPanel radioPanel = new JPanel(new GridLayout(0, 1));
            radioPanel.add(b1Button);
            radioPanel.add(b2Button);
            radioPanel.add(b3Button);
            radioPanel.add(b4Button);
            
            add(radioPanel, BorderLayout.LINE_START);
            setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
        }
        
        public int getSelezione(ActionEvent e){
            	
        	if (e.getActionCommand()=="1. Avviare una nuova partita")
        		sc = 1;
        	if (e.getActionCommand()=="2. Caricare una partita salvata")
        		sc = 2;
        	if (e.getActionCommand()== "3. Storico partita")
        		sc = 3;
        	if (e.getActionCommand()== "4. Esci")
        	    sc = 4;
        	return sc;
        }
    
        public int setSelezione(){
        	return sc;
        }
    
        public void actionPerformed(ActionEvent e) {
          sc = e.getModifiers();
        
        }
        
    
         private static void createAndShowGUI() {
    
            JFrame frame = new JFrame("Menù di scelta");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            JComponent newContentPane = new prova();
            newContentPane.setOpaque(true); //content panes must be opaque
            frame.setContentPane(newContentPane);
    
            frame.pack();
            frame.setVisible(true);
        }
    
    
        public static void main(String[] args) {
         
    	        javax.swing.SwingUtilities.invokeLater(new Runnable() {
    	            public void run() {
    	                createAndShowGUI();
    	            }
    	        });
    	    }
    chiamo in un main di un'altra classe questa classe rappresentante il JradioButton però quando la chiama è come se andasse in loop e mostra sempre la finestra senza permettermi di selezionare nessuna scelta. Da cosa può dipendere??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema JRadioButton

    Originariamente inviato da Gogeta SSJ87
    chiamo in un main di un'altra classe questa classe rappresentante il JradioButton però quando la chiama è come se andasse in loop e mostra sempre la finestra senza permettermi di selezionare nessuna scelta. Da cosa può dipendere??
    Che vuol dire "mostra sempre la finestra"??? Purtroppo non è molto chiaro ....

    Comunque dal punto di vista tecnico, in actionPerformed() dovresti fare la solita "catena" di if per testare quale JRadioButton è stato selezionato. E nota ... testa l'identità dei reference (devi tenerti i reference ai JRadioButton come variabili di istanza) .... non il testo del pulsante!

    E che ti serve getModifiers()???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Intendo che la finestra viene aperta sempre tant'è che nella barra della applicazioni di windows escono infinità di finestre aperte.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Gogeta SSJ87
    Intendo che la finestra viene aperta sempre tant'è che nella barra della applicazioni di windows escono infinità di finestre aperte.
    "chiamo in un main di un'altra classe questa classe" ... cioè come la invochi?? A seguito di cosa la invochi??? Guarda ... che non posso certo saperlo io!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    OK cerco di essere il piu chiaro e preciso possibile. Invoco quella classe postata poco fa in un main affinchè possa prendere la scelta effettuata e in base a queste eseguire un codice presente in uno switch

    codice:
      {  prova pr = new prova();
          pr.main(args);
          pr.setSelezione();
            	
    	       } switch (scelta)
    Questa è la parte in cui chiamo la classe di prima. Se vuoi posto tutto il main. Basta chiederlo

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Gogeta SSJ87
    OK cerco di essere il piu chiaro e preciso possibile. Invoco quella classe postata poco fa in un main affinchè possa prendere la scelta effettuata e in base a queste eseguire un codice presente in uno switch

    codice:
      {  prova pr = new prova();
          pr.main(args);
          pr.setSelezione();
            	
    	       } switch (scelta)
    Male ... innanzitutto perché dovresti avere più main()? Perché dovresti istanziare prova per invocare main()?
    Il codice comunque non è chiaro .... non è che per caso stai facendo un loop??

    Comunque il tuo approccio è molto discutibile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Sto chiedendo un aiuto se no nn ero qui. Cmq vabbe risolvo da solo mi sa. Grazie lo stesso.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.