Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hi, ich habe ein kleines Problem bei der Ausgabe einer Lineraren Liste.

Ich habe die Methroden die die Liste verwalten deklariert

, nur leider weis ich jetzt nicht wie ich diese in das text fenster asugeben lasse. mit println scheint es nicht zu gehen. Es muss ja auch die komplette Liste anzeigen udn nicht nur eine Person.


/**

 * @author 

 * @version 

 */

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import if08.guitools.*;

import java.io.*;


public class Personenliste extends JFrame implements ActionListener{



    // Attribute

    private Person anfang;

    private Person person;

    // Konstruktor


    private JTextField  tName, tPersonalnummer;


    private JList       tListe;


    private JButton     beinfuegen;


    public Personenliste() {

        super(); 

        this.setTitle("Liniare Liste");

        this.setBounds(0,0,650,410);

        this.setResizable(false);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        this.initGUI();      

        this.setVisible(true);

        anfang=null;



    }


    // Methoden

    private void initGUI() {

        this.setLayout(null);        

        // Die Textfelder

        tName       = GUIFactory.createTextField(this,"Name",20,40,80,150);

        tPersonalnummer    = GUIFactory.createTextField(this,"Personalnummer",20,70,80,150);





        // Ein Bereich zur Anzeige der aktuellen Liste

        tListe = GUIFactory.createList(this,280,40,350,220);



        // Die erforderlichen Tasten

        beinfuegen        = GUIFactory.createButton(this,"EinfŸgen",20,280,100);

        beinfuegen.addActionListener(this); 


    } // Ende initGUI


    public void actionPerformed(ActionEvent e) {

        Object quelle=e.getSource();                // Wer lšst das ActionEvent aus?

        if(quelle==beinfuegen)

            this.einfuegen(person);

        }


    public void einfuegen(Person pNeu){

        Person aktuell=anfang;

        if(anfang==null){

              anfang=pNeu;

             }

             else if(anfang.getPersonalnummer()>pNeu.getPersonalnummer()){

                    pNeu.setNachfolger(aktuell);

                    anfang=pNeu;

                }

        else{

            while (aktuell.getNachfolger()!=null && aktuell.getNachfolger().getPersonalnummer()<pNeu.getPersonalnummer()){

                aktuell=aktuell.getNachfolger();

            }

            pNeu.setNachfolger(aktuell.getNachfolger());

            aktuell.setNachfolger(pNeu);

        }



    }


        public String toString(){


        String s = "";


            return s;

    }

        public void ausgabe(){


        tListe.setListData(this.toString);    <- hier weis ich nicht weiter



        }


}




public class Person {


    // Attribute

private String name;

private int personalnummer;

private Person nachfolger;


    // Konstruktor

    public Person(String pName, int pNummer ) {

        name=pName;

        personalnummer=pNummer;


    }


    // Methoden

    public String getName(){

    return name;

    }

    public int getPersonalnummer(){

    return personalnummer;

    }

    public void setNachfolger(Person pNachfolger){

    nachfolger=pNachfolger;


    }

    public Person getNachfolger(){

    return nachfolger;

    }




    public String toString(){

    return name+"\t"+personalnummer+"\n";

    }

}

Du musst die Methode "toString" passend überladen, damit das println funktioniert. Ich würde Dir aber raten eine generische Klasse für die Liste zu schreiben und dann die toString Methode des Datentyps aufzurufen. Damit ist Deine Liste flexibler

HTH Phil

ich versteh nicht was du meinst. Ich habe ja ein Liste

zb. anton 12|-> berta 14|-> emil17|*

Jetzt möcht ich diese ja ausgeben in der Methode Ausgabe. Angezeigt werden soll es in dem Listenfeld tListe.

Bis jetzt hatte ich es immer mit einem Array gelöst und das Array dann in die tListe geschrieben. Nun ist das aber kein array. Es gibt ja nicht nur eine person sondern mehrere, sodass ich gerade nicht weis wie ich das ausgeben kann. Ich dahcte erst an printLn aber dann wird dochnicht in die tListe eingetragen oder?

Bei Array verwendung hatte ich dann hinterher in der Liste schöne meine Daten stehen.

Also entweder, du erzeugst dir in der Methode ausgabe() ein Arry, in dem alle Elemente enthalten sind, die in die Liste eingetragen werden sollen, und übergibst dieses Array dann der setListData(Object[]) Methode.

Oder du erzeugst dir ein Objekt der Klasse DefaultListModel. Die Datenhaltung in der JList geschieht nämlich über ein sogenanntes ListModel. Eine Standardimplementierung für den Eigengebrauch stellt das DefaultListModel zur Verfügung.

Diese Model hat dann auch eine Methode addElement(Object) mit der du nacheinander jedes einzelne Element dem Model, und damit der Liste, hinzufügen kannst.

Dein eigenes Model musst du deiner Liste entweder beim Erzeugen dem Konstruktor mitgeben oder über die Methode setModel(ListModel) bekannt machen.

Ich würde dann noch eher zu einem Iterator greifen.

Aber wie im OP beschrieben, soll die Ausgabe in einem Textfeld geschehen, d.h. die Liste muss einen String liefern und hierzu wäre dann die Methode "toString()" zu überladen

Phil

Aber wie im OP beschrieben, soll die Ausgabe in einem Textfeld geschehen, d.h. die Liste muss einen String liefern und hierzu wäre dann die Methode "toString()" zu überladen

Phil

Wo wurde das denn geschrieben?

Also ich lese da die ganze Zeit nur was von nem Listenfeld.

Und nen Iterator ist zwar schön und gut, aber wenn eine Lineare Liste selbst erstellt werden soll, und so wie es aussieht, siser nicht so viel Ahnung von Java hat, wäre der wohl ein wenig zu overpowered. Dann lass ihn lieber anfangen.

Also ich habs jetzt hinbekommen indem ich die Liste durhc ein TextArea ersetz habe und dann per println ausgegeben. In JList hatte er letzlich alles aneinander geschrieben, zumal ich vergaß eine Person zu erzeigen. Deshalb hatt er mir auch nichts ausgegeben da ich Person anfang=null gesetz hatte^^

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.