Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15

    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 è:


    codice:
    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

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Quote Originariamente inviata da CtNapoli Visualizza il messaggio
    ...
    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
    Vuol dire che prima di confermare la prenotazione, se per sbaglio cliccassi su "email", non mi sarebbe più possibile cambiare scegliendo "sms"?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Vuol dire che prima di confermare la prenotazione, se per sbaglio cliccassi su "email", non mi sarebbe più possibile cambiare scegliendo "sms"?
    Voglio dire che se ad esempio clicco sms per effettuare la prenotazione, automaticamente devo fare in modo che non posso più cliccare email (o viceversa)

  4. #4
    al momento del click, nell' actionPerformed, controlli quali jbutton è stato cliccato, e disabiliti l'altro.
    il jbutton cliccato dovresti recuperarlo con event.getSource() se non sbaglio.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15
    Per quanto riguarda la classe Prenotation ho fatto così:


    codice:
    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


    codice:
    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:");
        }
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Sarebbe meglio se chiarissi da subito cosa vuoi fare alla pressione dei vari tasti: hai davvero bisogno del passo intermedio, cioè di capire quando l'utente ha cambiato la scelta sul radiobutton, ma senza aver cliccato sul bottone ok?
    Perché se vuoi solo recuperare la scelta alla pressione del JButton, il RadioButtonActionListener è superfluo...

    In ogni caso la scelta dell'opzione la puoi memorizzare in molti modi, puoi salvarti il reference del bottone premuto (abbastanza inutile se poi non fai nulla su quel bottone in realtà, ma puoi farlo), oppure ti memorizzi un "indice" del bottone premuto...

    Di per sé non è difficile, fai un po' di chiarezza, tra l'altro quello che fai in PrenotationController, per come è scritto ora, non ha alcun senso, cerchi di forzare ad essere intere le stringhe "sms" o "email" (e tra l'altro non va molto bene reperire un elemento di un'altra classe senza il metodo apposito ma facendo view.option1).

    Spiega un po' meglio

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Sarebbe meglio se chiarissi da subito cosa vuoi fare alla pressione dei vari tasti: hai davvero bisogno del passo intermedio, cioè di capire quando l'utente ha cambiato la scelta sul radiobutton, ma senza aver cliccato sul bottone ok?
    Perché se vuoi solo recuperare la scelta alla pressione del JButton, il RadioButtonActionListener è superfluo...

    In ogni caso la scelta dell'opzione la puoi memorizzare in molti modi, puoi salvarti il reference del bottone premuto (abbastanza inutile se poi non fai nulla su quel bottone in realtà, ma puoi farlo), oppure ti memorizzi un "indice" del bottone premuto...

    Di per sé non è difficile, fai un po' di chiarezza, tra l'altro quello che fai in PrenotationController, per come è scritto ora, non ha alcun senso, cerchi di forzare ad essere intere le stringhe "sms" o "email" (e tra l'altro non va molto bene reperire un elemento di un'altra classe senza il metodo apposito ma facendo view.option1).

    Spiega un po' meglio
    Hai perfettamente ragione e chiedo scusa se sono stato poco chiaro
    Cerco di spiegarmi meglio

    Vorrei fare in modo che inizialmente compaia l'interfaccia grafica che permetta di scegliere tra sms o email.
    Una volta fatto ciò e cliccato ok per confermare, vorrei tenere conto della modalità di prenotazione che ho cliccato, salvandola da qualche parte in modo tale da poter avere a disposizione la scelta effettuata più avanti nel programma per altre funzionalità che mi vengono richieste

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da CtNapoli Visualizza il messaggio
    Vorrei fare in modo che inizialmente compaia l'interfaccia grafica che permetta di scegliere tra sms o email.
    Una volta fatto ciò e cliccato ok per confermare, vorrei tenere conto della modalità di prenotazione che ho cliccato, salvandola da qualche parte in modo tale da poter avere a disposizione la scelta effettuata più avanti nel programma per altre funzionalità che mi vengono richieste
    Ok ma questo si era già capito...

    Questo non specifica in alcun modo il perché tu abbia bisogno di un RadioButtonListener: non effettui alcun cambiamento all'interfaccia se uno sposta la scelta da email a sms, sarebbe diverso se ci fosse sotto un campo dove si può già inserire il numero di telefono o l'email, o una riga informativa che varia a seconda della scelta.

    Ma per ora ti interessa solo sapere la scelta alla pressione del tasto ok, e questo lo fai quando controlli quale dei due radio button è selezionato chiamandoci sopra il metodo isSelected().
    Se vuoi salvarti questa informazione basta appunto memorizzare il valore da qualche parte (anche una variabile boolean se hai solo queste due possibilità, o una variabile intera se ne avrai di più, ma non sono le uniche possibilità) oppure, come dicevo in precedenza, ti salvi il riferimento al JRadioButton, ma questo sarebbe utile se poi tu andassi a farci qualcos'altro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2015
    Messaggi
    15
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Ok ma questo si era già capito...

    Questo non specifica in alcun modo il perché tu abbia bisogno di un RadioButtonListener: non effettui alcun cambiamento all'interfaccia se uno sposta la scelta da email a sms, sarebbe diverso se ci fosse sotto un campo dove si può già inserire il numero di telefono o l'email, o una riga informativa che varia a seconda della scelta.

    Ma per ora ti interessa solo sapere la scelta alla pressione del tasto ok, e questo lo fai quando controlli quale dei due radio button è selezionato chiamandoci sopra il metodo isSelected().
    Se vuoi salvarti questa informazione basta appunto memorizzare il valore da qualche parte (anche una variabile boolean se hai solo queste due possibilità, o una variabile intera se ne avrai di più, ma non sono le uniche possibilità) oppure, come dicevo in precedenza, ti salvi il riferimento al JRadioButton, ma questo sarebbe utile se poi tu andassi a farci qualcos'altro...
    Effettivamente in questo momento ho molta confusione su come strutturare il tutto
    Momentaneamente ho risolto con un riferimento a JRadioButton, che poi andrò ad usare quando andrò avanti per tener conto di tutta la procedura di prenotazione per il Taxi e il completamento della corsa
    Grazie per l'aiuto e scusami ancora per la mia poca chiarezza

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.