Θα ήθελα να δημιουργήσω το δικό μου Τάξη / Αντικείμενο που μπορεί να αποθηκεύσει είτε JTextField ή JComboBox κάτω από την ίδια μεταβλητή. Αυτό είναι αυτό που έχω μέχρι τώρα:
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JTextField;
public class Parameter {
String name;
String type;
String value;
JComponent comp;
Parameter(String inName, String inType, String inValue) {
this.name = inName.trim();
this.type = inType.trim();
this.value = inValue.trim();
// Set Component Type
if (type.equalsIgnoreCase(bool)) {
String[] tfArray = { Yes, No };
comp = new JComboBox(tfArray);
comp.setFocusable(false);
((JComboBox)comp).setSelectedItem(value.trim());
} else {
comp = new JTextField(value);
}
}// End Parameter Constructor
public String getName() {
return name;
}
public String getType() {
return type;
}
public String getValue() {
return value;
}
public JComponent getComp() {
return comp;
}
}// End Parameter Class
Στη συνέχεια έχουμε ένα ArrayList που αποθηκεύει παραμέτρων Αντικείμενα μου. Το Όνομα / Τύπος / Αξία είναι στην πραγματικότητα προέρχεται από ένα αρχείο XML, αλλά έχω απλοποιήσει τη κωδικός για παράδειγμα:
static ArrayList<Parameter> parameterArray = new ArrayList<Parameter>();
for(int i = 0; i < 10; i++){
parameterArray.add(new Parameter(parameterName,parameterType,value));
}
Έχω στη συνέχεια προσθέστε τα συστατικά σε ένα JPanel .. π.χ.
for(int i = 0; i < 10 ; i++){
panel.add(parameterArray.get(i).getComp());
}
Πρόκειται Όλα τα έργα πρόστιμο μέχρι αυτό το στάδιο! Παίρνω comboboxes / JTextFields όπως αναμενόταν. Ωστόσο, όταν προσπαθώ να ανακτήσετε το κείμενο / SelectedItem αυτό μου δίνει την τιμή από τη στιγμή που το αντικείμενο παράμετρος για πρώτη φορά προετοιμαστεί π.χ.
for(int i = 0; i < 10; i++){
if(parameterArray.get(i).getType.equalsIgnoreCase(bool){
value = ((JComboBox)parameterArray.get(i).getComp()).getSelectedItem().toString();
}else{
value = ((JTextField)parameterArray.get(i).getComp()).getText();
}
}
Το θέμα είναι ότι αν τροποποιήσετε το JComboBox ή Η JTextField από το περιβάλλον .. αυτό εξακολουθεί να χρησιμοποιεί την τιμή από όταν είχε προετοιμαστεί .. Δεν το νέο τροποποιημένο αξία. Καμιά ιδέα??
Ευχαριστώ
Tim