Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168

    Jtable con jradiobutton e jcombobox

    Buonasera!!
    Ho una domanda per voi!!

    Ho una jtable. Nella prima colonna ci sono radiobutton, nelle restanti colonne ci sono menu a tendina.

    L'utente seleziona uno o più radiobutton e nella riga corrispondente al radiobutton selezionato imposta dei valori dal menu a tendina.

    Io dovrei capire quali sono i radiobutton selezionati e leggere i corrispondenti valori impostati dall'utente.

    Come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    65
    Intendevi forse delle checkbox? perchè la selezione nelle radiobutton è singola...
    potresti fare una cosa del genere:

    for (int i = 0; i < table.getRowCount(); i++) {
    boolean sel = (Boolean)table.getValueAt(i,x);
    if(sel==true) {
    "accesso alle sole righe checked"
    }
    }
    dove x è il numero della colonna in cui è contenuta la checkbox, nel tuo caso 0.

    spero di esserti stato d'aiuto, ciaoooooooo
    Ultima modifica di dabadort; 16-08-2014 a 23:51

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    È esattamente quello che volevo, grazie!

    Il problema però è che mi dà errore alla prima riga del ciclo for...
    mi esce:
    javax.swing.jradiobutton incompatibile with Java.lang.boolean


  4. #4
    Se non posti il codice dove carica l'eccezione mi sembra complicato capire l'errore.
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    La colonna 0 della tabella è riempita attraverso una query ad un database; ad ogni record è
    associato un checkbox. Questi sono i miei renderer ed editor per i checkbox.

    codice:
     class RadioButtonRenderer implements TableCellRenderer {  
      public Component getTableCellRendererComponent(JTable table, Object value,  
        boolean isSelected, boolean hasFocus, int row, int column) {  
       if (value==null) return null;  
       return (Component)value;  
      }  
     }  
     
     class RadioButtonEditor extends DefaultCellEditor implements ItemListener {  
      private JRadioButton button;  
      public RadioButtonEditor(JCheckBox checkBox) {  
       super(checkBox);  
      }  
      public Component getTableCellEditorComponent(JTable table, Object value,  
        boolean isSelected, int row, int column) {  
       if (value==null) 
        return null;
       button = (JRadioButton)value;  
       button.addItemListener(this);  
       return (Component)value;  
      }  
      
      public Object getCellEditorValue() { 
       button.removeItemListener(this); 
       return button;  
      }  
      public void itemStateChanged(ItemEvent e) {  
       super.fireEditingStopped();  
      }  
     }
    Una volta che l'utente seleziona uno o più checkbox e imposta i valori nei menu a tendina a questi associati, deve cliccare su OK.
    Cliccando su OK devo poter capire quali checkbox l'utente ha selezionato e leggere i valori che ha impostato inserendoli in una lista:
    List<Integer> lista = new ArrayList<Integer>();.
    Questo è il gestore del bottone OK.

    codice:
     private class GestoreBottoni implements ActionListener {
      public void actionPerformed(ActionEvent e) {
       if(e.getSource() == ok) {
        for(int i = 1; i < tabella.getRowCount(); i++) { // la riga 0 contiene solo i nomi delle colonne
         boolean selezione = (Boolean)tabella.getValueAt(i, 0);
         if(selezione == true) {
          for(int col = 1; col <= 4; col++) {
           lista.add((Integer)tabella.getValueAt(i, col));
          }
         }
        }
       }

  6. #6
    Perché in teoria te non estrai un boolean ma estrai un radiobutton
    codice:
    boolean selezione = (Boolean)tabella.getValueAt(i, 0);
    Prova così.
    codice:
    javax.swing.JRadioButton radiobutton=(javax.swing.JRadioButton)tabella.getValueAt(i, 0);
    boolean selezione = radiobutton.isSelected();

    Ciao.
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    168
    Perfetto, grazie mille

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.