Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Azione JButton con riferimento ad altri Choice

    Ho creato un JPanel in cui ho inserito 3 Choice e un JButton.
    Vorrei aggiungere un azione al JButton che permetta di creare un nuovo oggetto usando come parametri per il costruttore le Stringhe selezionata dal Choice. Ora, non ho assolutamente idea di come fare per "immagazzinare" da qualche parte i valori del Choice così da poterli usare premendo il JButton.

    Potete aiutarmi?
    Grazie

  2. #2
    Ciao,
    E' l'ennesima volta che ti diciamo di non mischiare i componenti AWT con quelli Swing.
    E puntualmente fai questo errore...guarda che può essere rischioso in una GUI fare questo tipo di mischioni.
    Usa piuttosto un JComboBox.
    Ciao.
    Ultima modifica di schumy2000; 24-06-2015 a 15:37
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Ok, allora ho fatto così:
    codice:
              String [] sel1={"M","F"};
              JComboBox boxGen=new JComboBox(sel1);
              boxGen.addItemListener(c.getGenere());
              String [] sel2={"0-9","10-15","16-20","21-50","51-over"};
              JComboBox boxEta=new JComboBox(sel2);
              boxEta.addItemListener(c.getEta());
              JComboBox boxCat=new JComboBox(); //devo inserire le categorie che però sono prese in lettura dal file
              boxGen.addItemListener(c.getCategoria());
              JButton b1=new JButton("add");
    
            JPanel headerLine1=new JPanel();
            headerLine1.add(boxGen);
            headerLine1.add(boxCat);
            headerLine1.add(boxEta);
            headerLine1.add(b1);
    
             header.add(headerLine1);
            add(header,BorderLayout.NORTH);
    Mentre nel controller ho inserito

    codice:
        private ItemListener genere;
        private ItemListener eta;
        private ItemListener categoria;
        private Action create;
        private String gen;
        private String cat;
        private String et;
    ....
    
    public ControllerMain(final ModelMain m, final ViewMain v) {
            this.m=m;
            this.v=v;
    .....
            genere=new ItemListener(){
                @Override
                public void itemStateChanged(ItemEvent e) {
                    gen=e.getItem().toString();
    
            categoria=new ItemListener(){
    
                @Override
                public void itemStateChanged(ItemEvent e) {
                    cat=e.getItem().toString();
                }};
                
            eta=new ItemListener(){
                @Override
                public void itemStateChanged(ItemEvent e) {
                    et=e.getItem().toString();
                }};
            create=new AbstractAction(){
                @Override
                public void actionPerformed(ActionEvent e) {
                    b=m.creaBiglietto(cat, et, gen);//crea un biglietto e lo riceve
    //crea una tabella nel view con i dati del biglietto
                    v.addRows(b.getGruppo(), b.getID(), b.getCategoria(), b.getGenere(), b.getPrice());
                    
                }};
    }
    
    
    public ItemListener getGenere() {
            return genere;
        }
        public ItemListener getEta() {
            return eta;
        }
        public ItemListener getCategoria() {
            return categoria;
        }
        public Action getCreate(){
            return create;
        }
        public Action getRemove(){
            return remove;
        }

    Il dubbio principale è se sto usando l'itemlistener in maniera corretta, in quanto non succede nulla quando faccio create!

  4. #4
    Come non detto, c'era un errore nel model. Ora quando faccio create mi aggiunge un biglietto però con tutti i parametri sbagliati. E se non cambio selezione dal menù a tendina per ogni cosa mi da un errore, mentre io vorrei che non toccando nulla mi prendesse come parametri quelli iniziali

    Penso che il problema sia con le categorie che importo così
    codice:
       String [] sel3=m.getCategorie();
              JComboBox boxCat=new JComboBox(sel3);
              boxGen.addItemListener(c.getCategoria());
    richiamando
    codice:
      public String[] getCategorie(){
        String s[]=categorie.toArray(new String[categorie.size()]);
        return s;}
    C'è un qualche problema di codice?
    Ultima modifica di wFree; 24-06-2015 a 21:44

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.