Swing JList Item in andere JList während Ausführung

Matze90

Mitglied
Hey Leute,
ich bin gerade dabei, ein kleines Cocktailbestellsystem zu schreiben.
Allerdings häng ich gerade an einem Problem, das mich schier in den Wahnsinn treibt:
In der Klasse "Verkaeufer" kann man aus einer JList Cocktails auswählen und diese bestellen. Sobald auf bestellen geklickt wird, soll das ausgwählte Item in eine JList der Klasse "Mixer" übergeben werden. Das soll geschehen, WÄHREND die beiden Klassen ausgeführt werden...
Hier Teile aus dem Code:
Java:
// Ausschnitt aus class Verkaeufer
        b2.addActionListener(new ActionListener(){
        
        	public void actionPerformed(ActionEvent arg0) {

         		Object e2=list2.getSelectedValue(); // Cocktail aus JList2 auswählen
        		
        		listModel3.addElement(e2); // zu JList3 hinzufügen
        		listModel2.removeElement(e2);  // aus JList2 löschen
        		
   [COLOR="Red"]     			mx.listModel1.addElement(e2);
        			mx.jList1 = new JList(mx.listModel1);[/COLOR]
        	}        		      	
        });

Java:
// Klasse Mixer
public class Mixer extends JFrame {

    DBConnect dbc = new DBConnect();
	// Variables declaration - do not modify                     
    public JLabel jLabel1 = new JLabel();
    public JLabel jLabel2 = new JLabel();
    public JLabel jLabel3 = new JLabel();
    public JLabel jLabel4 = new JLabel();
    public JLabel jLabel5 = new JLabel();
    public JList jList1,jList2,jList3,jList4;
    public JPanel jPanel1;
    public JScrollPane jScrollPane1,jScrollPane2,jScrollPane3,jScrollPane4;
    // End of variables declaration 
	Connection con;
	Statement stmt;
	ResultSet rs;
    public DefaultListModel listModel1=new DefaultListModel();
    public DefaultListModel listModel2=new DefaultListModel();
    public DefaultListModel listModel3=new DefaultListModel();
    public DefaultListModel listModel4=new DefaultListModel();
    
    public Mixer() {
        initComponents();
    }

    
    public void initComponents() {

        jPanel1 = new JPanel();
    	jLabel5 = new JLabel();
        jScrollPane1 = new JScrollPane();
        jList1 = new JList();
        jScrollPane2 = new JScrollPane();
        jList2 = new JList();
        jScrollPane3 = new JScrollPane();
        jList3 = new JList();
        jScrollPane4 = new JScrollPane();
        jList4 = new JList();

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Mixer");
        getContentPane().add(jLabel1, java.awt.BorderLayout.PAGE_START);

        jLabel2.setText("Mixer 1");

        jLabel3.setText("Mixer 2");

        jLabel4.setText("Mixer 3");

        jLabel5.setText("Mixer 4");


		jList1=new JList(listModel1);
        jScrollPane1.setViewportView(jList1);


		jList2=new JList(listModel2);
        jScrollPane2.setViewportView(jList2);

		jList3=new JList(listModel3);
        jScrollPane3.setViewportView(jList3);

        
		jList4=new JList(listModel4);
        jScrollPane4.setViewportView(jList4);


        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
                .addGap(52, 52, 52)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE))
                .addGap(60, 60, 60)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE))
                .addGap(59, 59, 59)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 84, Short.MAX_VALUE)
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 84, Short.MAX_VALUE))
                .addGap(52, 52, 52))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE))
                .addContainerGap())
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
        pack();
       
        // Inhalt der Labels ändern
        jLabel2.setText(dbc.getNameLabel1());
        jLabel3.setText(dbc.getNameLabel2());
        jLabel4.setText(dbc.getNameLabel3());
        jLabel5.setText(dbc.getNameLabel4());
       
    }
}

Hat jemand ne Idee, warum das Item aus "Verkaeufer" nicht in die JList in "Mixer" wandert?
Bin wirklich dankbar für jede Hilfe 🙂
 
Zuletzt bearbeitet:
Hat jemand ne Idee, warum das Item aus "Verkaeufer" nicht in die JList in "Mixer" wandert?

Hallo Matze,

willkommen bei "java-forum.org".

Der gezeigte Code sollte eigentlich funktionieren. Die Zeile [c]mx.jList1 = new JList(mx.listModel1);[/c] ist allerdings überflüssig. Falls das Problem noch nicht gelöst ist, mach bitte mal ein KSKB.

Gruß,
André
 
Hallo,

hab den Code mal auf das wichtigste reduziert. Aber auch hier ist das gleiche Phänomen: Das ausgewählte Item aus der JList in "Verkaeufer" will einfach nicht in die JList der Klasse "Mixer" wandern ???:L

Java:
package kskb;

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


public class Verkaeufer extends JFrame implements ActionListener {

	Mixer mx = new Mixer();
	// Variablen für die GUI                   
    JButton b1,b2;
    JLabel l1,l2,l3;
    JList list1,list2;
    JPanel panel1;
    JScrollPane scroll1,scroll2;
    
	
    public Verkaeufer() {
        initComponents();
    }
                        
    public void initComponents() {

        l1 = new javax.swing.JLabel();
        panel1 = new javax.swing.JPanel();
        l2 = new javax.swing.JLabel();
        l3 = new javax.swing.JLabel();
        scroll1 = new javax.swing.JScrollPane();
        b1 = new javax.swing.JButton();
        scroll2 = new javax.swing.JScrollPane();
        b2 = new javax.swing.JButton();

        // Bei Klick auf x Fenster schließen
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        // Labels beschreiben
        l1.setFont(new java.awt.Font("Tahoma", 1, 18));
        l1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        l1.setText("Verkäufer");
        getContentPane().add(l1, java.awt.BorderLayout.PAGE_START);
        l2.setText("Cocktail-Sortiment");
        l3.setText("Aktuelle Bestellung");

        // JLists beschreiben    
        final DefaultListModel listModel1=new DefaultListModel();
        list1=new JList(listModel1);
        scroll1.setViewportView(list1); // Scrollbalken hinzufügen
        listModel1.addElement("Sex on the Beach");
        listModel1.addElement("Tequila Sunrise");
        listModel1.addElement("Long Island Ice Tea");
            
        final DefaultListModel listModel2=new DefaultListModel();
		list2=new JList(listModel2);
        scroll2.setViewportView(list2);

        // Buttons beschreiben
        b1.setFont(new java.awt.Font("Tahoma", 1, 11));
        b1.setText(">>");
        b2.setText("<html>\nBestellung<br>\nabschicken<br>\n</html>");


        // Panel1 beschreiben
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(panel1);
        panel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(scroll1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE)
                    .addComponent(l2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addComponent(b1, javax.swing.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(scroll2, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                    .addComponent(l3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(b2, javax.swing.GroupLayout.Alignment.LEADING))
                .addGap(20, 20, 20)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGap(24, 24, 24))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(l2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(l3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(scroll2, javax.swing.GroupLayout.DEFAULT_SIZE, 320, Short.MAX_VALUE)
                            .addComponent(scroll1, javax.swing.GroupLayout.DEFAULT_SIZE, 320, Short.MAX_VALUE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(95, 95, 95)
                        .addComponent(b2, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(9, 9, 9)
                                .addComponent(b1))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(29, 29, 29))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(94, 94, 94)))
                .addContainerGap())
        );

        getContentPane().add(panel1, java.awt.BorderLayout.CENTER);
        
        pack();
        
    
        // Event bei Klick auf Button ">>"
        b1.addActionListener(new ActionListener(){
        

        	public void actionPerformed(ActionEvent arg0) {
        		Object e1 = list1.getSelectedValue();
        		listModel2.addElement(e1);
        	}

        });
    
        // Event bei Klick auf Button "Bestellung abschicken"
        b2.addActionListener(new ActionListener(){
        
        	public void actionPerformed(ActionEvent arg0) {

         		Object e2=list2.getSelectedValue();
        		listModel2.removeElement(e2); 
        		mx.listModel1.addElement(e2); // Hinzufügen des ausgewählten Cocktails zur Liste des Mixers1 in der Klasse Mixer
        	}        		      	
        });
    }


	public static void main(String args[]) {
		new Mixer().setVisible(true);
		new Verkaeufer().setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		
	}
                
}

Java:
package kskb;

import javax.swing.*;


public class Mixer extends JFrame {

    // Variablen für die GUI                    
    public JLabel jLabel1 = new JLabel();
    public JLabel jLabel2 = new JLabel();
    public JList jList1;
    public JPanel jPanel1;
    public JScrollPane jScrollPane1;

    public DefaultListModel listModel1=new DefaultListModel();
    
    public Mixer() {
        initComponents();
    }

    
    public void initComponents() {

        jPanel1 = new JPanel();
        jScrollPane1 = new JScrollPane();
        jList1 = new JList();

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Mixer");
        getContentPane().add(jLabel1, java.awt.BorderLayout.PAGE_START);

        jLabel2.setText("Mixer 1");


		jList1=new JList(listModel1);
        jScrollPane1.setViewportView(jList1);


        GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE))
                .addGap(52, 52, 52)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(60, 60, 60)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING))
                .addGap(59, 59, 59)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING))
                .addGap(52, 52, 52))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE))
                .addContainerGap())
        );

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
        pack();
       
    }
                    
}

Danke für die Antwort und für eure weitere Hilfe 🙂
 
Hallo Matze,

versuch mal, die Referenz auf den Mixer an den Verkaeufer zu übergeben, etwa so:

Java:
...
    public Verkaeufer() {
        initComponents();
    }

    private Verkaeufer(Mixer mixer) {
        this();
        mx = mixer;
    }
...
    public static void main(String args[]) {
        Mixer mixer = new Mixer();
        mixer.setVisible(true);
        new Verkaeufer(mixer).setVisible(true);
    }
...
Gruß,
André
 

Zurück
Oben