Je suppose que c'est une vraie question débutant mais je ne trouve pas de réponses ici, dans mon java-book ou ailleurs. J'essaye de construire une interface graphique en utilisant Swing où je peux enregistrer différents types de vin. Je veux ma classe de vin (il y aura une super classe de vin et trois sous-classes: rouge, blanc et rose) à la fois des cordes et des entiers (nom, année, etc.) et un tas d'objets comme Country, District, Maison et plus.Retour objet de JComboBox
je crée l'objet vin d'un JPanel composé maintenant d'un JTextArea
le nom et JComboBox
pour le pays, je remplir ma boîte combo en utilisant une boucle qui collecte la variable du nom du pays d'objet qui est stocké dans un Arraylist.
Voici ma forme pour le vin rosé, les autres ressemblent à peu près au même.
class RoseWineForm extends JPanel {
private JTextField wineName = new JTextField(15);
private JComboBox countryBox = new JComboBox();
public RoseWineForm() {
JPanel line1 = new JPanel();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
line1.add(new JLabel("Namn: "));
line1.add(wineName);
add(line1);
JPanel line2 = new JPanel();
line2.add(new JLabel("Ursprungsland"));
line2.add(countryBox);
for(Country c : listOfCountries) {
countryBox.addItem(c.getCountryName());
}
add(line2);
}
public String getName() {
return wineName.getText();
}
public Country getCountry() {
return ;
}}
Voici le ActionListener
qui envoie l'utilisateur aux formes
class NewWineListener implements ActionListener {
public void actionPerformed (ActionEvent a) {
try {
JComboBox wineColor = (JComboBox) a.getSource();
if (wineColor.getSelectedIndex() == 0) {
RedWineForm red = new RedWineForm();
int answer = JOptionPane.showConfirmDialog(TestVin.this, red, "Nytt rött vin",
JOptionPane.OK_CANCEL_OPTION);
} else if (wineColor.getSelectedIndex() == 1) {
WhiteWineForm white = new WhiteWineForm();
int answer = JOptionPane.showConfirmDialog(TestVin.this, white, "Nytt vitt vin",
JOptionPane.OK_CANCEL_OPTION);
} else {
RoseWineForm rose = new RoseWineForm();
int answer = JOptionPane.showConfirmDialog(TestVin.this, rose, "Nytt rosé vin",
JOptionPane.OK_CANCEL_OPTION);
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(TestVin.this, "Fel inmatning!");
}
}
Voici ma classe de pays:
public class Country {
private String countryName;
public Country(String countryName) {
this.countryName = countryName;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String newCountryName) {
if (newCountryName == null || newCountryName.trim().isEmpty()) {
System.out.println("You have to set a name.");
} else {
countryName = newCountryName;
}}
public String toString() {
return countryName;
}
}
Ma question est: Lorsque je sélectionne le nom du pays dans mon zone de liste déroulante comment puis-je retourner l'objet et non seulement le String
appelé countryName
afin que je puisse créer mon objet vin avec les variables String name
un d Country country
?
J'espère que vous comprendrez qu'il y a du suédois là-dedans.
Une seule ligne vide d'espace blanc dans le code source est tout ce qui est * jamais * nécessaire. Les lignes vides après '{' ou avant '}' sont également généralement redondantes. –