Java ComboBox und Arrayausgabe

Hallo Gemeinde,

ich möchte gern ein kleines Programm erstellen zu Übungszwecken. Hier mal der Code, wie es soweit aussieht:

import java.awt.\*;
import java.awt.event.\*;
import javax.swing.\*;
import javax.swing.event.\*;

/\*\*
 \*
 \* Beschreibung
 \*
 \* @version 1.0 vom 17.07.2012
 \* @author
 \*/

public class GUI extends JFrame {
 // Anfang Attribute
 private JComboBox jComboBox1 = new JComboBox();
 private JComboBox jComboBox2 = new JComboBox();
 private JButton jButton1 = new JButton();
 private JTextField jTextField1 = new JTextField();
 private JLabel jLabel1 = new JLabel();
 private JLabel jLabel2 = new JLabel();
 private JLabel jLabel3 = new JLabel();
 private JButton jButton2 = new JButton();
 // Ende Attribute

 public GUI(String title) {
 // Frame-Initialisierung
 super(title);
 setDefaultCloseOperation(WindowConstants.DISPOSE\_ON\_CLOSE);
 int frameWidth = 512;
 int frameHeight = 475;
 setSize(frameWidth, frameHeight);
 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
 int x = (d.width - getSize().width) / 2;
 int y = (d.height - getSize().height) / 2;
 setLocation(x, y);
 setResizable(false);
 Container cp = getContentPane();
 cp.setLayout(null);
 // Anfang Komponenten

 String[] knr = {"1001", "1002", "1003", "1004", "1005" };
 String[] artnr = {"2001", "2002", "2003", "2004", "2005" };

 jComboBox1.setBounds(8, 96, 150, 20);
 JComboBox b = new JComboBox();
 for(int i = 0; i 



Ich schreibe die Kundennummern die Ausgewählt werden und zum Warenkorb hinzugefügt werden in ein Array und das selbe passiert mit den Artikelnummern. 

Ebenfalls das selbe soll mit den Mengen der jewailigen Artikel passieren... 

Fragen:

1) Wie bekomm ich es hin, dass die Mengen mit ins Array gespeichert werden und nach dem Klick auf "zum Warenkorb hinzufügen" wieder leer ist

2) Wie schaffe ich, das ich eine Kundennummer nur einmal auswählen kann solange ich nicht auf "Bestellung abschließen" geklickt habe?

3) Artikelnummer und Mengenangaben sollen vernünftig zueinander sortiert sein, wie?


<small>MOD: Pre-Tag eingefügt</small>

Hallo,

erst mal unabhängig von deinen Fragen:

  • Sourcecode den du mit

    Tags formattierst ist deutlich besser lesbar

  • sprechende Variablennamen erleichten das Verständnis für (fremden und eigenen) Sourcecode deutlich

Ich schreibe die Kundennummern die Ausgewählt werden und zum
Warenkorb hinzugefügt werden in ein Array und das selbe
passiert mit den Artikelnummern.

Ebenfalls das selbe soll mit den Mengen der jewailigen Artikel
passieren…

Fragen:

  1. Wie bekomm ich es hin, dass die Mengen mit ins Array
    gespeichert werden und nach dem Klick auf „zum Warenkorb
    hinzufügen“ wieder leer ist

Du könnstet z.B. eine eigene Klasse für eine Position der Bestellung erstellen, die Anzahl, Artikel- und Kundennummer beinhaltet und diese nicht in separaten Arrays ablegen, z.B.

 private class Position {
 String kundenNr;
 String artNr;
 int menge;

 public Position(String kundenNr, String artNr, int menge) {
 this.kundenNr = kundenNr;
 this.artNr = artNr;
 this.menge = menge;
 }

 public String toString() {
 return "Position [Kunde: " + kundenNr + ", Artikel: " + artNr + ", Menge: " + menge + "]";
 }
  1. Wie schaffe ich, das ich eine Kundennummer nur einmal
    auswählen kann solange ich nicht auf „Bestellung abschließen“
    geklickt habe?

Stichwort setEnabled: http://docs.oracle.com/javase/6/docs/api/javax/swing…

  1. Artikelnummer und Mengenangaben sollen vernünftig
    zueinander sortiert sein, wie?

Ich habe deine Arrays mal durch eine Liste ersetzt:

 // Anfang Methoden
 public void jButton1\_ActionPerformed(ActionEvent evt) {

 String kundenNr = (String) jComboBox1.getSelectedItem();
 String artNr = (String) jComboBox2.getSelectedItem();

 // Achtung: Fehlerträchtig, Freitext in Integer wandeln
 int menge = Integer.parseInt(jTextField1.getText());
 orders.add(new Position(kundenNr, artNr, menge));
 jComboBox1.setEnabled(false);

 } // end of jButton1\_ActionPerformed

 public void jButton2\_ActionPerformed(ActionEvent evt) {
 for(Position o : orders) {
 System.out.println(o);
 }
 jComboBox1.setEnabled(true);
 } // end of jButton2\_ActionPerformed

Statt einer List kann man auch eine Klasse des Collection Frameworks benutzen, die automatisch sortieren, z.B. ein TreeSet: http://docs.oracle.com/javase/6/docs/api/java/util/T…

Du könntest einen Comparator definieren, der die Positions-Objekte anhand der Artikelnummer und/oder Menge sortiert. Ein Beispiel ist in „Java ist auch eine Insel“ zu finden: http://openbook.galileocomputing.de/javainsel/javain…

HTH
Heavy

Ich habe deine Arrays mal durch eine Liste ersetzt:

Diese Zeile wollte ich eigentlich auch noch reinkopieren:

private java.util.List orders = new java.util.ArrayList();

Vielen Dank für den schnellen Support und die sehr hilfreiche Antwort :smile: