Classe Prenotazione con 2 scelte

di il
6 risposte

Classe Prenotazione con 2 scelte

Devo realizzare una classe con interfaccia grafica che faccia in modo che un cliente possa prenotare un Taxi via sms o e-mail


Al momento quello che ho scritto è:

package view;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Prenotation extends JFrame implements ActionListener {
   JLabel lblSms;
   JLabel lblEmail;
   JPanel pnlMain;
   public JButton txtsms;
   public JButton txtemail;


   public Prenotation (String title){
       super(title);
       lblSms= new JLabel("sms:");
       lblEmail= new JLabel("email:");
       pnlMain = new JPanel();
       txtsms = new JButton("Sms");
       txtemail = new JButton("E-Mail");             

       pnlMain.add(lblSms);
       pnlMain.add(txtsms);
       pnlMain.add(lblEmail);
       pnlMain.add(txtemail);


       txtsms.addActionListener(this);
       txtemail.addActionListener(this);

       getContentPane().add(pnlMain);

       pack();
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);

   }



   public void actionPerformed(ActionEvent event){

       System.out.println("Prenotato");


   }

   public static void main (String[] args )
   {
       new Prenotation("Prenotazione Avvenuta");
   }
}
Vorrei fare in modo che se al click del mouse scelgo sms mi compare che ho scelto di prenotare con sms, se clicco email allora mi compare che ho scelto di prenotare con email
Inoltre vorrei fare in modo che una volta cliccata una delle 2 possibilità, non si dia la possibilità all'utente di poter cliccar nuovamente una delle 2 scelte

6 Risposte

  • Re: Classe Prenotazione con 2 scelte

    Invece di usare dei JButton potresti usare dei JRadioButton da andare ad inserire in un ButtonGroup.
    Dai un'occhiata qui http://www.codejava.net/java-se/swing/jradiobutton-basic-tutorial-and-examples
  • Re: Classe Prenotazione con 2 scelte

    xneo ha scritto:


    Invece di usare dei JButton potresti usare dei JRadioButton da andare ad inserire in un ButtonGroup.
    Dai un'occhiata qui http://www.codejava.net/java-se/swing/jradiobutton-basic-tutorial-and-examples
    Forse la tua è scelta migliore, provo a modificare e posto il mio avanzamento
  • Re: Classe Prenotazione con 2 scelte

    Per quanto riguarda la classe Prenotation ho fatto così:
    package view;
    
    import java.awt.FlowLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    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.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JRadioButton;
    import javax.swing.SwingUtilities;
    
    public class Prenotation extends JFrame {
    
    	private JButton buttonOK = new JButton("OK");
    
    	public JRadioButton option1 = new JRadioButton("Sms");
    	public JRadioButton option2 = new JRadioButton("Email");
    
    	private JLabel labelImage = new JLabel();
    
    	public Prenotation() {
    		super("Swing JRadioButton Demo");
    
    		ButtonGroup group = new ButtonGroup();
    		group.add(option1);
    		group.add(option2);
    
    		option2.setSelected(true);
    
    		setLayout(new GridBagLayout());
    		GridBagConstraints constraints = new GridBagConstraints();
    		constraints.gridx = 0;
    		constraints.gridy = 0;
    		constraints.anchor = GridBagConstraints.CENTER;
    		constraints.insets = new Insets(10, 10, 10, 10);
    
    		add(option1, constraints);
    		constraints.gridx = 1;
    		add(option2, constraints);
    		constraints.gridx = 2;
    
    		constraints.gridx = 0;
    		constraints.gridy = 1;
    		constraints.gridwidth = 3;
    
    		add(labelImage, constraints);
    
    		constraints.gridy = 2;
    		add(buttonOK, constraints);
    
    		RadioButtonActionListener actionListener = new RadioButtonActionListener();
    		option1.addActionListener(actionListener);
    		option1.addActionListener(actionListener);
    
    		buttonOK.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent event) {
    				String selectedOption = "";
    				if (option1.isSelected()) {
    					selectedOption = "Sms";
    				}
    				else if (option2.isSelected()) { 
    					selectedOption = "Email";
    				}
    				JOptionPane.showMessageDialog(Prenotation.this,
    						"Hai scelto: " + selectedOption);
    			}
    		});
    
    		pack();
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLocationRelativeTo(null);
    	}
    
    	class RadioButtonActionListener implements ActionListener {
    		@Override
    		public void actionPerformed(ActionEvent event) {
    			JRadioButton button = (JRadioButton) event.getSource();
    			 
    		}
    	}
    
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    
    			@Override
    			public void run() {
    				new Prenotation().setVisible(true);
    			}
    		});
    	}
    }
    
    Magari ho lasciato qualcosa di troppo, invece per la parte relativa al controllore ho qualche difficoltà
    Come faccio a tenere nota del bottone che ho cliccato
    Al momento la parte relativa all'ActionPerformed l'ho impostata così ma c'è da cambiarne il funzionamento
    package controller;
    
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.AbstractButton;
    import javax.swing.ButtonGroup;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    
    import view.Prenotation;
    
    public class PrenotationController implements ActionListener {
    	Prenotation view;
    	public PrenotationController(Prenotation view){
    		this.view = view;
    	}
    	public void actionPerformed(ActionEvent arg0) {
    		System.out.println("Hai Cliccato");
    		int sms;
    		int email;
    		sms = Integer.parseInt(view.option1.getText());
    		email = Integer.parseInt(view.option1.getText());
    		System.out.println("Hai scelto:");
    	}
    }
  • Re: Classe Prenotazione con 2 scelte

    Ma PrenotationController che ruolo ha? Quale componente ha questo ascoltatore?
  • Re: Classe Prenotazione con 2 scelte

    xneo ha scritto:


    Ma PrenotationController che ruolo ha? Quale componente ha questo ascoltatore?
    Per il momento non fa niente, l'ho usato così al solo fine di non generare errore nel programma
  • Re: Classe Prenotazione con 2 scelte

    Allora lo potresti usare come ActionListener per i JRadioButton e quando viene invocato l'actionPerformed ti mantieni un riferimento al componente che ha generato l'evento.
    In questo modo tieni nota del bottone che hai cliccato
Devi accedere o registrarti per scrivere nel forum
6 risposte