Moltiplicare indice jComboBox per un numero

di il
12 risposte

Moltiplicare indice jComboBox per un numero

Salve,non riesco a moltiplicare un numero (es:3) per il valore dell'indice di una jComboBox. Se per esempio nel menù a tendina seleziono 3,voglio che la variabile C sia uguale a 9 (3x3) e così via.
Ho provato con:
C= 3 * (Integer)jComboBox1.getSelectedItem();
ma non funziona. Grazie.

12 Risposte

  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    C= 3 * (Integer)jComboBox1.getSelectedItem();
    ma non funziona. Grazie.
    Se gli oggetti nel JComboBox sono degli Integer, tecnicamente sarebbe ok. Se hai inserito oggetti String es. "2" ovviamente no, non può funzionare solo un cast a Integer!
  • Re: Moltiplicare indice jComboBox per un numero

    All'interno del jComboBox vi sono numeri interi (1,2,3,..) eppure non funziona.
  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    All'interno del jComboBox vi sono numeri interi (1,2,3,..) eppure non funziona.
    Fai vedere il codice usato per riempire il combobox.
  • Re: Moltiplicare indice jComboBox per un numero

    andbin ha scritto:


    Ishima ha scritto:


    All'interno del jComboBox vi sono numeri interi (1,2,3,..) eppure non funziona.
    Fai vedere il codice usato per riempire il combobox.
    jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }));
            jComboBox2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jComboBox2ActionPerformed(evt);
                }
            });
    
    Sono riuscito a risolvere l'unico problema è che quando seleziono l'elemento 1 per lui è 0 e quindi la moltiplicazione viene 0,invece il numero 2 per lui è uno e quindi C=3. Come faccio a farlo partire da 1 anzichè zero?
  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }));
    Ma difatti sono stringhe, non numeri interi!
    Se vuoi numeri interi (e quindi poter poi fare il cast a Integer):
    jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new Integer[] { 1, 2, 3,  ..........., 20 }));
    Se la questione fosse che NetBeans non ti permette di ottenere tramite editing "visuale" questa forma con gli interi ... allora questo è un limite/problema di NetBeans. Non di Swing o che altro.
    E maggior ragione varrebbe quello che dico e ripeto spesso: il codice per la GUI andrebbe scritto a mano.
  • Re: Moltiplicare indice jComboBox per un numero

    andbin ha scritto:


    Ishima ha scritto:


    jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" }));
    Ma difatti sono stringhe, non numeri interi!
    Se vuoi numeri interi (e quindi poter poi fare il cast a Integer):
    jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new Integer[] { 1, 2, 3,  ..........., 20 }));
    Se la questione fosse che NetBeans non ti permette di ottenere tramite editing "visuale" questa forma con gli interi ... allora questo è un limite/problema di NetBeans. Non di Swing o che altro.
    E maggior ragione varrebbe quello che dico e ripeto spesso: il codice per la GUI andrebbe scritto a mano.
    Grazie mille,comunque c'è un modo per settare la prima selezione,in questo caso 1,1 anzichè 0?
  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    c'è un modo per settare la prima selezione,in questo caso 1,1 anzichè 0?
    Con un setup del genere, l'elemento inizialmente "selezionato" nel combobox è il primo della sequenza impostata. Se vuoi cambiare la selezione iniziale basta usare setSelectedIndex o setSelectedItem.
    Intendevi questo, ho capito bene?
  • Re: Moltiplicare indice jComboBox per un numero

    andbin ha scritto:


    Ishima ha scritto:


    c'è un modo per settare la prima selezione,in questo caso 1,1 anzichè 0?
    Con un setup del genere, l'elemento inizialmente "selezionato" nel combobox è il primo della sequenza impostata. Se vuoi cambiare la selezione iniziale basta usare setSelectedIndex o setSelectedItem.
    Intendevi questo, ho capito bene?
    Si,in pratico voglio che l'elemento 1 sia riconosciuto come 1 e non come 0 e così via. Se seleziono l'elemento 2 lo riconosce come 1 ecc..
  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    andbin ha scritto:


    Ishima ha scritto:


    Si,in pratico voglio che l'elemento 1 sia riconosciuto come 1 e non come 0 e così via. Se seleziono l'elemento 2 lo riconosce come 1 ecc..
    Un conto è l'indice degli elementi (che è zero-based) ... un altro conto è il valore degli elementi (che tecnicamente possono essere oggetti di un qualunque tipo).

    Se inserisci oggetti Integer, come ho indicato io, il cast che avevi scritto risulta appropriato e funzionante (ed ottieni quello che volevi, se selezioni 2, hai C= 3*2 )
  • Re: Moltiplicare indice jComboBox per un numero

    Ok,quindi lo zero based non si può modificare portandolo ad 1? Ho paura che andando a creare una nuova jCombo,tutto risulti sfasato tra cui il posizionamento.
  • Re: Moltiplicare indice jComboBox per un numero

    Ishima ha scritto:


    Ok,quindi lo zero based non si può modificare portandolo ad 1? Ho paura che andando a creare una nuova jCombo,tutto risulti sfasato tra cui il posizionamento.
    Scusa ma onestamente non capisco il tuo dubbio. L'indice degli elementi è zero based.
    Se avessi configurato quattro interi:

    new DefaultComboBoxModel(new Integer[] { 5, 6, 7, 8 })

    L'elemento con valore 5 è il primo pertanto indice 0. Quindi vuoi basarti sugli indici o sugli oggetti contenuti? Decidilo tu ...

    All'inizio avevi scritto:
    C= 3 * (Integer)jComboBox1.getSelectedItem();
    Questo è sensato e tecnicamente corretto ma presuppone che nel combobox/model ci siano oggetti Integer ... non String.

    Se vuoi persistere con la strada degli oggetti String, il cast a Integer NON funziona. Serve fare un "parsing" usando Integer.parseInt(String).

    Ripeto: è solo tutto qui.
  • Re: Moltiplicare indice jComboBox per un numero

    andbin ha scritto:


    Ishima ha scritto:


    Ok,quindi lo zero based non si può modificare portandolo ad 1? Ho paura che andando a creare una nuova jCombo,tutto risulti sfasato tra cui il posizionamento.
    Scusa ma onestamente non capisco il tuo dubbio. L'indice degli elementi è zero based.
    Se avessi configurato quattro interi:

    new DefaultComboBoxModel(new Integer[] { 5, 6, 7, 8 })

    L'elemento con valore 5 è il primo pertanto indice 0. Quindi vuoi basarti sugli indici o sugli oggetti contenuti? Decidilo tu ...

    All'inizio avevi scritto:
    C= 3 * (Integer)jComboBox1.getSelectedItem();
    Questo è sensato e tecnicamente corretto ma presuppone che nel combobox/model ci siano oggetti Integer ... non String.

    Se vuoi persistere con la strada degli oggetti String, il cast a Integer NON funziona. Serve fare un "parsing" usando Integer.parseInt(String).

    Ripeto: è solo tutto qui.
    Ho risolto,grazie mille
Devi accedere o registrarti per scrivere nel forum
12 risposte