Erste Schritte Array in ListBox ausgeben

Danielek

Mitglied
Hallo zusammen,

ich habe vor kurzem meine Ausbildung zum Fachinformatiker für Anwendungsentwicklung begonnen und versuche mich zurzeit in Java einzuarbeiten.

Ich habe mir zu selbstlernzwecken die Aufgabe gestellt (Welches ich in C# schon gelöst habe, hab ich C# einwenig Schulvorkenntnisse) ein Programm zu schreiben, indem ich Personendaten (Name, Vorname, Adresse ...) nach der Eingabe über ein Texfeld, in einem Array speichere. Dieses Array möchte ich dann in einer ListBox ausgeben und später die Einträge bearbeiten oder auch löschen.

Damals in C# hat mir diese Aufgabe keine großen Probleme bereitet und ich hatte vor als kleinen Java Einstieg diese Aufgabe mit Java zu lösen.

Mein Programm funktioniert bisher.
Mein Array habe ich selber gebaut, ist also vom Typ objekt.

Die Eingabe, Speicherung etc. funktioniert. Die Ausgabe über ein Label ist auch kein Thema, allerdings bekomme ich es nicht in einer ListBox hin, was ja vorraussetzung wäre um später über anklicken die verschiedenen Ausgaben zu bearbeiten.

Java:
	public void listBoxAktualisieren()
	{
		ausgabeListBox.clearModel();
		for (int i = 0; i < verwaltung.gibanzahlPersonen(); i++)
		{
			ausgabeListBox.[COLOR="Red"]??????[/COLOR](verwaltung.gibVorname(i), verwaltung.gibName(i));
		}
	}

Diese Methode ist gemeint. Rot markiert das Schlüsselwort welches mir fehlt.

Bei C# ging dies einfach mit ausgabeListBox.Items.Add(verwaltung.gibVorname(i));
Ich habe schon Stunden gegoogelt, finde allerdings keine Lösung. Wiegesagt. In der Schleife habe ich schon testweise ein Label zur Ausgabe benutzt, was dann funktioniert hat.

Für Hilfe oder Tipps wäre ich echt dankbar 🙂
 
Zuletzt bearbeitet:
Java:
ausgabeListBox = new javax.swing.JList();

ausgabeListBox.setModel(new javax.swing.AbstractListModel() {
    String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };//hier übergibts du dein array, als String deklariert [String] array <name> = ...
    public int getSize() { return strings.length; }
    public Object getElementAt(int i) { return strings[i]; }
});

jScrollPane1.setViewportView(ausgabeListBox);

ich hoffe, dass hilft dir weiter
 
Danke, hat mir aufjedenfall ein Stück im Verständniss geholfen.

Leider funktioniert es immernoch nicht so wie ich es möchte.

Mein IDE (xDev 3.1) erkennt allerdings jScrollPane1.setViewportView, und javax.swing.JList(); nicht.

Muss ich da was bestimmtes importieren?

Importiert ist:

Java:
package Fenster;
import java.text.DateFormat;
import java.util.*;
import Klassen.Personenarray;
import java.util.List;
import java.util.ArrayList;

import java.util.LinkedList;
import xdev.lang.EventHandlerDelegate;
import xdev.ui.*;
import xdev.ui.event.TextChangeAdapter;
import xdev.ui.text.TextFormat;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.DocumentEvent;

import Klassen.Verwaltung;
 
dies als attribute setzen:
Java:
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;


ich hab das ganze über netbeans gui erstellt. sehr schönes tool 🙂
 
der komplette quelltext aus netbeans:
Java:
package test;

/**
 *
 * @author A001278
 */
public class listbox extends javax.swing.JFrame {

    /**
     * Creates new form listbox
     */
    public listbox() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(jList1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(126, 126, 126)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(99, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(127, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see [url=http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html]How to Set the Look and Feel (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)[/url] 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(listbox.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(listbox.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(listbox.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(listbox.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new listbox().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JList jList1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration
}
 
Ich glaube meine Probleme liegen an der IDE

Die gesamte ListBox wird beim erstellen schon vorprogrammiert und daran kann ich nicht ohne weiteres was ändern, zumindest wüsste ich jetzt noch nicht wie - gehen tut das bestimmt.

Als Beispiel, um nochmal deutlich zu machen worin mein Problem liegt.

Java:
	public void listBoxAktualisieren()
	{
		ausgabeListBox.clearModel();
		for (int i = 0; i < verwaltung.gibanzahlPersonen(); i++)
		{	
		label7.setText(verwaltung.gibName(i));
				}
	}

hierbei übernimmt das Label jedesmal wenn die Methode ausgeführt wird, den jeweiligen Namen.
Klappt also ganz einfach.
Ich will aber nur eine Ausgabe haben, jedoch nicht in einem Label, sondern in einer ListBox alle nebeneinander (nicht untereinander) die in einem Array stehen.
Untereinander stehen dann die verschiedenen Instanzen (oder Objekte) der Klasse personenarray (so heißt bei mir das Array)

Ich kann auch mal den gesamten Quelltext posten, allerdings sind das 3 Klassen & jede Menge Text, ich glaub das würde es auch nicht bringen..

Aber schonmal vielen Dank für die Hilfe ! 🙂

Das mit .length hab ich total versäumt, werde den Quelltext dafür noch verändern
 
Zuletzt bearbeitet:
ich versteh nicht ganz was du willst.
du hast ein array mit namen und willst dieses nebeneinander ausgegeben?
in etwa so?
hans,josef,stefan, ....
 
hast du ein zweidimensionales array?
ich würde da eher jTable empfehlen
dann hast alles geordnet und mit gleichen abständen oder muss es die liste sein?
 
Nein ich glaube ich habe eine Liste erstellt

Ich bin gerade selber etwas durcheiannder, ich glaub mein Quelltext ist einwenig durcheinander geraten weil ich manche Dinge verwechselt habe.

Ich versuch das nochmal in Ordnung zu bringen und melde mich wenn es dann immernoch nicht geht 😀
 

Neue Themen


Zurück
Oben