JList auffüllen aus Array von Instanzen

francisca93

Mitglied
Hallo,
ich sitze gerade an einer Praktikumsaufgabe, wobei ein Produktapplet erstellt werden soll. Dazu muss ich erstmal eine JList mit den Namen der Produkte aufüllen. Die Produkte sind eine Klasse mit den Attributen String name, double stückpreis, int anzahl; daraus soll nun der String name aus allen Instanzen der Klasse der JList zugefügt werden.

Mein bisheriger Versuch sieht so aus:

Die Klasse mit Konstruktor:
Code:
public class Werkzeug {
   
    String name;
    double Stueckpreis;
    int Anzahl;
   
    public double preis(){
       
        return 0.0;
    }



    public Werkzeug(String n, double s, int a){
        name = n;
        Stueckpreis = s;
        Anzahl = a;
    }
}

Hier das Ende der init-Methode:
Code:
Werkzeug w[] = {
                    new Werkzeug("Schraubenzieher", 8.95, 0),
                    new Werkzeug("Hammer", 6.49, 0),
                    new Werkzeug("Maurerkelle", 9.95,0)
            };
                                   
            for (int i=0; i<w.length; i++)
            listProdukte.add(w[i].name);

Die Zuweisung mit dem Punktoperator ist sicher falsch, aber ich hab keine Ahnung wie man es sonst machen könnte 🙁
 
Danke für den Tip. Ich hab es jetzt entsprechend dem Beispiel gemacht:
Code:
JList listProdukte = new JList(listModel);
            listProdukte.setBounds(30, 69, 145, 166);
            contentPane.add(listProdukte);
          
            Werkzeug w[] = {
                    new Werkzeug("Schraubenzieher", 8.95, 0),
                    new Werkzeug("Hammer", 6.49, 0),
                    new Werkzeug("Maurerkelle", 9.95,0)
            };
          
            DefaultListModel listModel = new DefaultListModel();          
            for (int i=0; i<w.length; i++)
            listModel.addElement(w[i].name);
        }
Leider scheint er "listModel" und "DefaultListModel" nicht zu erkennen ("cannot be resolved") - muss man da noch irgendwas importieren mit import.javax... ?
Und die Zuweisung über den Punktoperator bei w.name ist soweit o.k.?
 
Juhuuuu es funktioniert 🙂

Könnte vielleicht nochmal jemand den ganzen Text überfliegen, ob das so "guter Programmierstil" ist und ich es so abgeben kann?

Code:
package praktikum_3;

public class Werkzeug {
   
    String name;
    double Stueckpreis;
   
   
    public Werkzeug(String n, double s){
        name = n;
        Stueckpreis = s;
       
    }
}
Code:
package praktikum_3;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JList;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.DefaultListModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.*;




public class Praktikum_3 extends JFrame {
   
    private JPanel contentPane;
    private JList listProdukte;
    private JLabel lblProdukt;
    private JLabel lblStueckpreis;
    private JLabel lblAnzahl;
    private JLabel lblPreis;
    private JLabel lblGesamtpreis;
    private JLabel lblStueckpreisAnz;
    private JLabel lblPreisAnz;
    private JLabel lblGesamtpreisAnz;
    private JTextField textFieldAnzahl;
   
    DecimalFormat f = new DecimalFormat("#0.00");
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Praktikum_3 frame = new Praktikum_3();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Praktikum_3() {
       
        init();
    }   
   
    Werkzeug w[] = {
            new Werkzeug("Schraubenzieher", 8.95),
            new Werkzeug("Hammer", 6.49),
            new Werkzeug("Maurerkelle", 9.95),
            new Werkzeug("Zollstock", 2.49),
            new Werkzeug("Hobel", 15.95)
    };
   
        public void init(){   
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 300);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);
           
           
           
            lblProdukt = new JLabel("Produkt:");
            lblProdukt.setBounds(30, 30, 55, 16);
            contentPane.add(lblProdukt);
           
            lblStueckpreis = new JLabel("Stueckpreis:");
            lblStueckpreis.setBounds(204, 70, 83, 16);
            contentPane.add(lblStueckpreis);
           
            lblAnzahl = new JLabel("Anzahl:");
            lblAnzahl.setBounds(204, 114, 55, 16);
            contentPane.add(lblAnzahl);
           
            lblPreis = new JLabel("Preis:");
            lblPreis.setBounds(204, 162, 55, 16);
            contentPane.add(lblPreis);
           
            lblGesamtpreis = new JLabel("Gesamtpreis:");
            lblGesamtpreis.setBounds(204, 219, 83, 16);
            contentPane.add(lblGesamtpreis);
           
            lblStueckpreisAnz = new JLabel("New label");
            lblStueckpreisAnz.setBounds(324, 70, 55, 16);
            contentPane.add(lblStueckpreisAnz);
           
            lblPreisAnz = new JLabel("New label");
            lblPreisAnz.setBounds(324, 162, 55, 16);
            contentPane.add(lblPreisAnz);
           
            lblGesamtpreisAnz = new JLabel("New label");
            lblGesamtpreisAnz.setBounds(324, 219, 55, 16);
            contentPane.add(lblGesamtpreisAnz);
           
            textFieldAnzahl = new JTextField();
            textFieldAnzahl.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                   
                    int input = Integer.parseInt (textFieldAnzahl.getText());
                    double preis = input*(Double.parseDouble(lblStueckpreisAnz.getText()));
                    lblPreisAnz.setText("" + f.format(preis));
                    gesamtpreis = gesamtpreis + preis;
                    lblGesamtpreisAnz.setText("" + f.format(gesamtpreis));
                    textFieldAnzahl.setText("");
                }
                                       
            });
            textFieldAnzahl.setBounds(320, 112, 59, 20);
            contentPane.add(textFieldAnzahl);
            textFieldAnzahl.setColumns(10);
           
            DefaultListModel listModel = new DefaultListModel();
           
            JList listProdukte = new JList(listModel);
            listProdukte.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            listProdukte.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    int i = listProdukte.getSelectedIndex();
                    if ((i>=0)&&(i<=w.length)){
                        lblStueckpreisAnz.setText("" + w[i].Stueckpreis);                   
                    }   
                }
            });
           
           
            listProdukte.setBounds(30, 69, 145, 166);
            contentPane.add(listProdukte);
           
                           
             for (int i=0; i<w.length; i++)
            listModel.addElement(w[i].name);       
                        
           
        }
        double gesamtpreis = 0;
       
       
}
 

Zurück
Oben