Mehrere Einträge auswerfen?

kitz

Mitglied
Hallo,

ich habe folgenden Code:

Java:
import java.applet.Applet;
import java.awt.List;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Reiseziel extends Applet implements ActionListener {
    private String stadt = "          ";
    private List li;

    public void init() {
        // neue Liste, nur 4 Eintraege im Fenster sichtbar
        // false: nur ein Eintrag markierbar
        li  = new List(4, true);
        li.add(" Berlin   ");
        li.add(" Hamburg  ");
        li.add(" Hannover ");
        li.add(" Koeln    ");
        li.add(" Frankfurt");
        li.add(" Stuttgart");
        li.add(" Muenchen ");
        add(li);
        li.addActionListener(this);
    }

    public void paint(Graphics g) {
        final String zeileA = "Waehlen Sie Ihr Reiseziel aus !";
        final String zeileB = "Sie muessen doppelt klicken !! ";
        final String zeileC = "Sie wollen nach   ";
        g.drawString(zeileA ,        50, 120);
        g.drawString(zeileB ,        50, 150);
        g.drawString(zeileC + stadt, 50, 180);
    }

    public void actionPerformed(ActionEvent aE) {
        if (aE.getSource() == li) {   // duerfte hier fehlen !!
            stadt = li.getSelectedItem();
        }
        repaint();
    }
}

Ich möchte jetzt gerne nicht nur ein Reiseziel auswerfen lassen.
Also wie ich mehrere Einträge gleichzeitig markieren kann in der Liste weiß ich, aber wie kann ich mehrere Einträge gleichzeitig als Ergebnis ausschreiben (untereinander bzw. nebeneinander) in der Methode actionPerformed?
Kann mir da jemand weiterhelfen?
 

eRaaaa

Top Contributor
Mhm, also eine Überlegung:
Anstatt
Java:
  private String stadt = "          ";
benutzt du erstmal einArray
Java:
  private String[] stadt;

in der actionPerformed holst du dir erstmal alle selektierten Einträge(getSelectedItems() liefert ein String[]-Array)
Java:
		stadt = li.getSelectedItems();
		repaint();

in deiner paint Methode dann so etwas wie:
Java:
		if(stadt != null){
			for (int i = 0; i < stadt.length; i++) {
				g.drawString(zeileC + stadt[i], 50, 180+(i*20)); //y = i*20 ist nur ein Beispiel!
			}
		}

anstelle deiner Zeile 32 (ZeileC) (oder wie du es eben willst...)
 

kitz

Mitglied
mir fällt doch grad noch was ein..
wenn ich jetzt ein textfeld erzeige und ich die ausgewählten ziele dort auschreiben lassen will, wie mache ich das dann? habs mit setText versucht, aber da kann ich ihm meine auswahl ja nicht übergeben...
dann müsste ich ja statt drawString meine auswahl irgendwie an das textfeld übergeben, oder?
 

eRaaaa

Top Contributor
Joah, das Zeichnen fällt dann weg, d.h. repaint() raus und dafür dann ein setText oder so. Besser geeignet für so etwas ist da wahrscheinlich aber eher eine TextArea anstelle eines TextFeldes?
 

kitz

Mitglied
also das textfeld ist in der aufgabe vorgegeben...
und mit setText muss ich ihm ja einen String geben, aber ich will ja dann gerne dass er meinen String stadt auswirft... das will er aber nicht...
 

kitz

Mitglied
also ich hatte da sowas wie

Java:
TextField textfield = new TextField(20);
textfield.setText(stadt);

also so hatte ich gedacht, aber das geht ja net weil er das net als String anerkennt...
Da hab ich irgendwie nen Knoten im Hirn
 

kitz

Mitglied
also mal anders..
das mit dem reisen war nur ein testprogramm, das eigentliche ist dieses hier ;) nur das wollte ich euch net antun, da noch länger

Java:
import java.awt.*;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class EA4_3 extends Frame implements ActionListener{

    private static String[] auswahl;
    private List li;


    public static void main(String[] args) {

	    Frame f = new Frame("Liste mit Obst");
	    Panel panel = new Panel();
	    f.add(panel);
	    f.setSize(300, 250);
	    f.setVisible(true);
	    f.addWindowListener(new WindowAdapter(){
		      public void windowClosing(WindowEvent e){
		        System.exit(0);
		      }
		    });

	List li = new List(4,  true) ;

	li.add("Melone");
    	li.add("Zucchini");
    	li.add("Birne");
        li.add("Tomate");
        li.add("Banane");

	    panel.add(li);

	    TextField textfield = new TextField(20);
            textfield.setText(java.util.Arrays.toString (auswahl));


	    panel.add(textfield);
    }

    public void paint(Graphics g) {
        final String zeileA = "Waehlen Sie Ihr Reiseziel aus !";
        final String zeileB = "Sie muessen doppelt klicken !! ";
        final String zeileC = "Sie wollen nach   ";
        if(auswahl != null){
            for (int i = 0; i < auswahl.length; i++) {
                g.drawString(zeileC + auswahl[i], 50, 180+(i*20));

        g.drawString(zeileA ,        50, 120);
        g.drawString(zeileB ,        50, 150);

    }
        }
    }

    

     public void actionPerformed(ActionEvent aE) {
        if (aE.getSource() == li) {   // duerfte hier fehlen !!
            auswahl = li.getSelectedItems();
        repaint();
    }
}
}

hab das eingefügt, nun wirft er mir im textfeld als ergebnis null aus, egal was ich drücke..
 

Landei

Top Contributor
Du musst das Event natürlich auch an deine Liste dranhängen (Kann es sein, dass das dann kein ActionListener, sondern ein ListSelectionOrderSoÄhnlichListener sein muss? Zu faul zu nachschauen...)
 

kitz

Mitglied
sooo, nu hab ich das mit ItemListener versucht, kriege aber immer das setSelectedItem bzw. getSelectedItem rot unterstrichen...
Da ich das nicht testen kann durch die fehler weiß ich nicht ob das jetzt ansatzweise richtig ist...
Ich möchte, dass er alle Einträge, die ich markiere ins Textfeld ausgegeben werden

achso, hier der aktuelle Code

Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;


public class EA4_3 extends Applet implements ItemListener {

    private static String[] auswahl;
    
	List li = new List(4,  true) ;
        Panel panel = new Panel();
        TextField textfield = new TextField("", 3);

        public void init() {

	li.add("Melone");
    	li.add("Zucchini");
    	li.add("Birne");
        li.add("Tomate");
        li.add("Banane");

	    panel.add(li);
	    panel.add(textfield);
    }

    public void itemStateChanged(ItemEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

  
    class MyList implements ItemListener {

        public void getItemSelectable(ItemListener evt) {

            auswahl = li.getSelectedItems();
            textfield.setSelectedItems();

	    if (auswahl.equals("Melone")) {
		textfield.getSelectedItem();
                }
            if (auswahl.equals("Zucchini")) {
                textfield.getSelectedItem();
            }
            if (auswahl.equals("Erdbeeren")) {
                textfield.getSelectedItem();
            }
            if (auswahl.equals("Birne")) {
                textfield.setSelectedItem();
            }
            if (auswahl.equals("Apfel")) {
                textfield.setSelectedItem();
            }
        }

        public void itemStateChanged(ItemEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

     
}
}

Und ich verstehe nicht, warum er die Methode itemStateChanged nicht in meine class MyList reinpacken will...
Da meckert er immer, deswegen hab ich das nun 2 mal drin da, weil er es bei MyList nicht akzeptiert...

Habt Geduld mit mir, ich stehe im Moment ein wenig unter Strom :oops:
 

eRaaaa

Top Contributor
Uha..da ist so einiges falsch ;/

a) du fügst dein Panel nirgends hinzu!
b) du registrierst den Listener nicht (und du musst dich entscheiden .bzw es wäre besser *g* : entweder eine eigene Klasse für den Listener oder eben implements ItemListener, beides brauchst du eig. hier nicht)
c*) meiner Meinung nach wäre eine TextArea angebrachter als ein TextField
d) Ein TextField/TextArea hat nunmal keiner der Methoden get/setSelectedItem..die hat nur eine Liste...setText oder append() sind die Methoden die du suchst.


Java:
import java.applet.Applet;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class EA4_3 extends Applet {
	List li = new List(4, true);
	Panel panel = new Panel();
	TextArea textfield = new TextArea(10, 10);

	public void init() {
		li.add("Melone");
		li.add("Zucchini");
		li.add("Birne");
		li.add("Tomate");
		li.add("Banane");
		li.addItemListener(new MyList());
		panel.add(li);
		panel.add(textfield);
		add(panel);
	}

	class MyList implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			if (e.getStateChange() == ItemEvent.SELECTED) {
				String item = li.getItem((Integer) e.getItem());
				textfield.append(item);
				textfield.append("\n");
			}
		}
	}
}

so oder so ähnlich....("Ich möchte, dass er alle Einträge, die ich markiere ins Textfeld ausgegeben werden" war etwas ungenau :D )

p.s.: gibt es eig. einen Grund wieso du kein Swing verwenden möchtest? ;/
 

kitz

Mitglied
also ich MUSS ein textfeld benutzen.. ist so vorgegeben...
ich arbeite nicht mit swing weil ich mich nur mit awt einigermaßen auskenne und mich swing verwirrt...
bin doch weiblich :oops:
 

eRaaaa

Top Contributor
Ups, hattest du weiter oben ja schon mal erwähnt :)oops:)

Nenne mal die genaue Aufgabenstellung...soll vllt immer nur eine Auswahl in der Liste getätigt werden und genau dieses Item in dem Textfeld angezeigt werden? :autsch:
 

kitz

Mitglied
Das da ist die Aufgabenstellung:

Erzeugen Sie eine Javaapplikation (Frame) und ein Panel.
Das Panel registriert eine ListBox des Typs List, die fünf Einräge
enthält, z.B.
„Melone“
„Zucchini“
„Birne“
„Tomate“
„Banane“

Der Benutzer kann einen oder mehrere Listeneinträge auswählen.
Seine Auswahl wird in ein Textfeld geschrieben. Wählt der Benutzer
erneut aus, so ist das Textfeld zu aktualisieren.
Der Frame soll über eine innere Klasse MyList verfügen, die von
List abgeleitet ist. In dieser wird die Methode processItemEvent
in geeigneter Weise überschrieben.
Alternativ kann die innerere Klasse MyItemListener das Interface
ItemListener implementieren.
Sie können wahlweise AWT- oder Swing-Komponenten verwenden

p.s.: natürlich ist das applet falsch *hüstel* soll ja frame sein
also der grundaufbau wie ganz oben, den hab ich nu wieder hergestellt ;)
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Naja, und was ist jetzt deine Frage? Du hast oben jetzt schon ein Beispiel und Anregungen bekommen, bringt ja nichts wenn wir dir jetzt die Komplettlösung vorführen....p.s.: Du sollst einen Frame benutzen und kein Applet!

Für mich ist die Aufgabenstellung aber ehrlich gesagt auch ein wenig merkwürdig...aber nun ja :p
 

kitz

Mitglied
neja, dass mir auf dem textfeld ein markiertes objekt ausgegeben wird das funktioniert ja ;)
und eure bemerkungen hab ich ja auch verinnerlicht und auch umgesetzt wenn möglich...
nur wenn ich jetzt melone und tomate anwähle, dann soll er mir beide im textfeld ausgeben und das will nicht hinhauen...
ich kriege es immer nur hin, dass er mir nur eins von beiden anzeigt... aber ich werd mal noch ein wenig rumbasteln ;)
 

eRaaaa

Top Contributor
Naja, mit
Code:
li.getSelectedItems()
bekommst du doch alle ausgewählten Objekte(String[])...
iteriere halt über dieses Array und füge es dem Textfeld hinzu (setText(getText()) <- so in der Art (oder eben einen String zusammenbasteln und dann nur setText()).
Vorher evtl. jedes mal den Text aus dem Textfeld löschen(setText("")) damit nicht alles doppelt hinzugefügt wird...

Noch Fragen? :)
 

kitz

Mitglied
ich kann es drehen und wenden wie ich will, es funktioniert einfach nicht... irgend nen fehler wirft er mir immer aus, egal was ich ihm zuweise... das soll halt wohl einfach nicht sein bei mir... das bleibt jetzt bei einem eintrag, sonst geh ich gleich in die luft :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K mehrere DB Einträge in einem JTable darstellen ?HILFE! Java Basics - Anfänger-Themen 2
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
Buroto Klassen Mehrere .txt Datein verbienden und anschließend auslisten Java Basics - Anfänger-Themen 10
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
M mehrere Rückgabenwerte aus Methode Java Basics - Anfänger-Themen 7
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
Ich lerne Java. Methoden Mehrere Methoden mit Punkt Java Basics - Anfänger-Themen 45
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
B Methoden Mehrere ähnliche Methoden zusammenfassen Java Basics - Anfänger-Themen 24
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
C Mehrere Zufallswerte Java Basics - Anfänger-Themen 4
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
E Mehrere Arrays addieren mit Übertrag Java Basics - Anfänger-Themen 13
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
F Mehrere Buttons mit einem ActionListener abdecken Java Basics - Anfänger-Themen 24
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
javajoshi mehrere Threads: Methoden zentral unterbringen Java Basics - Anfänger-Themen 8
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
L Mehrere Jars im Unterordner Java Basics - Anfänger-Themen 2
L LibGDX - mehrere Screens Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
T Mehrere JFrames gleichzeitig öffnen Java Basics - Anfänger-Themen 6
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
B Mehrere Zahlen speichern Java Basics - Anfänger-Themen 60
M mehrere extends? Java Basics - Anfänger-Themen 19
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
C ButtonController löst mehrere Methoden aus Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
B Timer mehrere Male ausführen Java Basics - Anfänger-Themen 4
kilopack15 Mehrere Threads in einer Klasse Java Basics - Anfänger-Themen 8
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
F Mehrere Konstruktoren? Wofür? Java Basics - Anfänger-Themen 21
J Mehrere Eingabefelder programmiert (Zeigt Fehler an) Java Basics - Anfänger-Themen 6
Jinnai4 Mehrere Textfelder überprüfen Java Basics - Anfänger-Themen 16
N Mehrere Forms auf einem Panel Java Basics - Anfänger-Themen 6
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
D Mehrere Objekte in ein Objekt zusammenfassen Java Basics - Anfänger-Themen 16
D Input/Output Mehrere Befehle nacheinander ausführen Java Basics - Anfänger-Themen 20
K Mehrere Objekte anlegen Java Basics - Anfänger-Themen 23
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
J MVC Pattern, mehrere Controller/Views/Models Java Basics - Anfänger-Themen 0
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
F Mehrere Konstruktoren Java Basics - Anfänger-Themen 10
A Mehrere Radiobuttons Java Basics - Anfänger-Themen 3
B Klassen Mehrere Objekte mit Schleife erstellen - How? Java Basics - Anfänger-Themen 1
T Mehrere Methoden in der main-Methode verknüpfen und aufeinander anwenden Java Basics - Anfänger-Themen 2
V OOP Aufnahme von Dreiecken in ein/mehrere Objekte Java Basics - Anfänger-Themen 0
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
C Klasse auf mehrere Objekte zugreifen lassen Java Basics - Anfänger-Themen 26
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
K Mehrere String.valueOf() kürzer schreiben / "packen"? Java Basics - Anfänger-Themen 2
F String mehrere male ausgeben? Java Basics - Anfänger-Themen 4
H wie mehrere variablen in einfacher for-schleife? Java Basics - Anfänger-Themen 2
H möglichkeiten für for-schleife? (mehrere ausgangsvariablen?) Java Basics - Anfänger-Themen 9
M PdfBox - mehrere Formularseiten Java Basics - Anfänger-Themen 2
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
F Methoden split() - Mehrere Zeichen Java Basics - Anfänger-Themen 5
F Erste Schritte Mehrere nextInt() Eingaben nebeneinander ausgeben Java Basics - Anfänger-Themen 12
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
T Compiler-Fehler Mit Array und "for" mehrere ImageIcon erstellen Java Basics - Anfänger-Themen 7
N Mehrere berechnungen auf einem Button legen? Java Basics - Anfänger-Themen 19
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
M Mehrere Variabeln zusammenfassen Java Basics - Anfänger-Themen 4
M Erste Schritte mehrere Objekte aus einer Klasse Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben