il mio problema è il seguente:
una volta selezionato un elemento con il mio JcomboBox, vorrei copiarlo in una stringa...con JTextField non ho problemi in quanto utilizzo getText()...ma con un JComboBox come diavolo faccio?
il mio problema è il seguente:
una volta selezionato un elemento con il mio JcomboBox, vorrei copiarlo in una stringa...con JTextField non ho problemi in quanto utilizzo getText()...ma con un JComboBox come diavolo faccio?
Hai provato con getSelectedItem()?Originariamente inviato da Uri_geller
il mio problema è il seguente:
una volta selezionato un elemento con il mio JcomboBox, vorrei copiarlo in una stringa...con JTextField non ho problemi in quanto utilizzo getText()...ma con un JComboBox come diavolo faccio?
Restituisce un object, quindi se vuoi salvarlo sotto forma di stringa devi fare un cast.
si..ci avevo pensato pero' ho un dubbio: non è che devo pure gestire l'azione del mouse sulla combobox?
Non dovrebbe esserci il bisogno. Poi dipende da quello che devi fare.Originariamente inviato da Uri_geller
si..ci avevo pensato pero' ho un dubbio: non è che devo pure gestire l'azione del mouse sulla combobox?
Risolto!
bisognava implementare un'azione selectionListener...certo che queste ComboBox sembrano apparentemente facili da usare..ed invece sono una bella rogna!
guarda le API e vedi bene cosa dicono.
Per quanto riguarda il "prelevare" il valore della combo banalmente getSelectedItem risponde alle tue esigenze: restituisce un object, che è appunto l'item in questione.
Ovviamente devi vedere se abiliti la selezione multipla o meno, in quel caso guardi getSelecteditems e hai una lista (array se non ricordo male) di items.
Usando invece il selectionlistener fai un'altra cosa: associ un'azione al cambiamento della selezione. Ogni volta che cambi, in qualche modo la selezione corrente, viene generato questo evento.
Sono due cose differenti ed è meglio che tu veda bene le differenze.
Un occhio alle API e al tutorial oracle (ben fatto) non fa male
Adesso ho un altro problema:
Ho un ArrayList che contiene informazioni riguardanti gli Hotel(nome ,stelle,indirizzo,n°stanze..).
Mi creo un ComboBox che contiene solamente i nomi degli hotel.
Adesso, una volta selezionato un hotel da combobox, vorrei che nella mia finestra comparissero le info riguardanti quell'hotel(le info sono su ArrayList)..come faccio?
Questo è il codice che ho implementato:
[CODE][CODE]import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class infoHotel extends JFrame{
private JComboBox uneditableComboBox;
private JLabel label;
private JLabel label_i;
private String[] items;
private String scelta ;
public infoHotel(ArrayList<String> l){
super("infoHotel");
setBounds(0,35,500,600);
getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
//*******Conto gli elementi che dovrò caricare nella mia ComboBox********
int numItem= 0;
for(int i=0;i<l.size();i++){
String buf = new String();
buf = l.get(i).toString();
if(buf.startsWith("H") )
numItem++;
}
//INSERISCO GLI ELEMENTI OPPORTUNI DELL'ARRAYLIST NELLA MIA COMBOBOX
items = new String[numItem];
int k = 0;
for(int i=0;i<l.size();i++){
String buf = new String();
buf = l.get(i).toString();
if(buf.startsWith("H")){
items[k] =(String.valueOf(buf) );
k++;
}
}
//******************************
uneditableComboBox =new JComboBox(items);
ActionListener selectionListener = new SelectionListener();
uneditableComboBox.addActionListener(selectionList ener);
label = new JLabel();
getContentPane().add(uneditableComboBox);
getContentPane().add(label);
setVisible(true);
}
class SelectionListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JComboBox cb = (JComboBox)e.getSource();
String selectedItem =(String)cb.getSelectedItem();
//MI STAMPA SU UNA LABEL IL NOME DELL'HOTEL CHE SELEZIONO(non riesco a stampare le altre info)
label.setText( selectedItem );
}
}
}
Il modo migliore per poterlo fare è quello di passare al ComboBox direttamente una sequenza di istanze della classe Hotel, piuttosto che della classe String.Originariamente inviato da Uri_geller
Adesso ho un altro problema:
Ho un ArrayList che contiene informazioni riguardanti gli Hotel(nome ,stelle,indirizzo,n°stanze..).
Mi creo un ComboBox che contiene solamente i nomi degli hotel.
Adesso, una volta selezionato un hotel da combobox, vorrei che nella mia finestra comparissero le info riguardanti quell'hotel(le info sono su ArrayList)..come faccio?
non lo posso fare, perchè praticamente, una volta inserito il numero delle stanze vengono create delle stringhe "S+NumeroStanza" che andranno inserite in un'altra comboBox..esempio:
NomeHotel: Deluxe
Stelle: 3
Stanze 3
S1
S2
S3
Quando seleziono Hotel Deluxe dalla mia ComboBox, dovrei visualizzare nel frame le info relative all'hotel, mentre in un altra comboBox saranno inserite le stanze S1 S2 S3..cio' serve per la prenotazione di una stanza..
Allora definisci un map tra i nomi degli hotel e le relative informazioni.Originariamente inviato da Uri_geller
non lo posso fare
Potresti usare una istanza della classe java.util.HashMap, ed in particolare definirla così:
HashMap<String, String[]>, dove String rappresenta il nome di un hotel e l'array rappresenta la sequenza di informazioni associate a quel nome.
Resta il fatto che la prima soluzione è sempre quella consigliata, semplicemente perchè sei in Java.