Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227

    Popolare combobox da elementi in database

    Allora ho un piccolo problemino con una combobox. è la prima volta che provo a usarla e purtroppo non ho capito molto il materiale che ho trovato. Il problema che ho è che non solo il menù a tendina non appare, ma viene imposto sempre il primo elemento della tabella del database dal quale prendo gli oggetti.
    Codice:

    codice:
    int i = 0;
      String[] record = null;
        JFrame frame = new JFrame("Inserire strumento");
        JPanel panel = new JPanel();
       JComboBox cb = new JComboBox();
     // v è un vector
     while ( i<v.size() ) {
      //creo la string
        record = (String[]) v.elementAt(i);
        i++;
      for ( int j=0; j<record.length; j++)
    {  cb.addItem(record[j]);  
    }  
    }  panel.add(cb);
      frame.add(panel);
      String strumentostu = (String)cb.getSelectedItem();
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  2. #2
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30

    Re: Popolare combobox da elementi in database

    Originariamente inviato da abbax
    Allora ho un piccolo problemino con una combobox. è la prima volta che provo a usarla e purtroppo non ho capito molto il materiale che ho trovato. Il problema che ho è che non solo il menù a tendina non appare, ma viene imposto sempre il primo elemento della tabella del database dal quale prendo gli oggetti.
    Codice:

    codice:
    int i = 0;
      String[] record = null;
        JFrame frame = new JFrame("Inserire strumento");
        JPanel panel = new JPanel();
       JComboBox cb = new JComboBox();
     // v è un vector
     while ( i<v.size() ) {
      //creo la string
        record = (String[]) v.elementAt(i);
        i++;
      for ( int j=0; j<record.length; j++)
    {  cb.addItem(record[j]);  
    }  
    }  panel.add(cb);
      frame.add(panel);
      String strumentostu = (String)cb.getSelectedItem();
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Cosa significa che "viene imposto sempre il primo elemento della tabella del database dal quale prendo gli oggetti"?
    Perche fai questo?
    codice:
    String strumentostu = (String)cb.getSelectedItem();

  3. #3
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    si scusa non mi sono spiegato molto bene. Dopo alla creazione della combobox faccio una query che utilizza lo strumento inserito nella combobox.

    codice:
    String query = "SELECT ID_strumento FROM strumenti "
                 + "WHERE Nome_strumento = '"+strumentostu+"'";     
    System.out.println(query);
    Come vedi dopo stampo il risultato della query e dopo nome_strumento ho sempre clarinetto, che è il primo elemento della tabella strumenti.

    Mi sa che mi sono anche dimenticato di dire che il menù a tendina non compare nemmeno

    Lo String strumentostu = (String)cb.getSelectedItem();
    lo faccio per mettere all'interno di una stringa ciò che è stato selezionato nella combobox (almeno credo che dovrebbe fare questo)

    Grazie per la disponibilità

  4. #4
    Utente di HTML.it L'avatar di burm87
    Registrato dal
    Aug 2009
    Messaggi
    30
    Originariamente inviato da abbax
    si scusa non mi sono spiegato molto bene. Dopo alla creazione della combobox faccio una query che utilizza lo strumento inserito nella combobox.

    codice:
    String query = "SELECT ID_strumento FROM strumenti "
                 + "WHERE Nome_strumento = '"+strumentostu+"'";     
    System.out.println(query);
    Come vedi dopo stampo il risultato della query e dopo nome_strumento ho sempre clarinetto, che è il primo elemento della tabella strumenti.

    Mi sa che mi sono anche dimenticato di dire che il menù a tendina non compare nemmeno

    Lo String strumentostu = (String)cb.getSelectedItem();
    lo faccio per mettere all'interno di una stringa ciò che è stato selezionato nella combobox (almeno credo che dovrebbe fare questo)

    Grazie per la disponibilità
    Si, la getSelectedItem() fa quello. Forse che sia un problema legato al Vector che utilizzi? Dentro al vector da quanto vedo ci sono array di stringhe, sicuro che sia corretto?
    Invece per quanto riguarda il menu a tendina dovrebbe per lo meno vedersi, a prescindere dai dati che ci sono dentro

  5. #5
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    penso che sia corretto perchè ho fatto anche delle stampe su schermo che funzionano... però sinceramente non ne sono così sicuro

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Devi però verificare che la selezione ci sia stata.
    Inoltre dovresti mostrarci il codice che utilizzi per aggiungere il ComboBox al frame.

    I passaggi di norma sono:

    1) Creazione JComboBox (puoi creare anche un model, usando ad esempio DefaultComboBoxModel);
    2) Aggiunta JComboBox al pannello;
    3) Aggiunta pannello al frame o ad un altro pannello che poi lo esporrà;

    Se utilizzi DefaultComboBoxModel non avrai problemi nell'eventuale rimozione o aggiunta di elementi al runtime.


    EDIT:

    Un esempio scritto un pò di fretta, ma credo comprensibile.

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    class Example extends JFrame implements ActionListener {
      private DefaultComboBoxModel<String> model;
      private JComboBox<String> cb;
      private JButton add, remove;
      private JTextField campo;
      
      
      Example() {
        JPanel pannello = new JPanel();
    	
    	model = new DefaultComboBoxModel<String>();
        cb = new JComboBox<String>(model);
    	
    	String[] str = {"uno","Due","Tre","Quattro","Cinque","Sei"};
    	for(int i=0; i<str.length; i++) cb.addItem(str[i]);
    	
    	pannello.add(cb);
    	
    	campo = new JTextField(10);
    	add = new JButton("Aggiungi");
    	remove = new JButton("Rimuovi selezionato");
    	
    	pannello.add(cb);
    	
    	pannello.add(add);
    	pannello.add(campo);
    	pannello.add(remove);
    	
    	add(pannello);
    	
    	add.addActionListener(this);
    	remove.addActionListener(this);
    	
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
      
      
      public void actionPerformed(ActionEvent ae) {
        if(ae.getSource() == add) {
    	  if(campo.getText().length() > 0) {
    	    model.addElement(campo.getText());
    	  }
    	} else {
    	  String s = (String) model.getSelectedItem();
    	  if(s != null) model.removeElement(s);
    	}
      }
      
      
      
      public static void makeGUI() {
        Example e = new Example();
    	e.setSize(500,500);
    	e.setVisible(true);
      }
    
      public static void main(String[] args) {
        try {
    	  SwingUtilities.invokeAndWait(new Runnable() {
    	    public void run() {
    		  makeGUI();
    		}
    	  });
    	} catch(Exception e) {}
      }
    }

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.