PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JList -> Scrollbar -> JPanel



Jor
21-12-2005, 07:55
Hallo *.*,

es funzt nicht richtig.:confused:

Ich habe ein JFrame, mit Layout-Manager und da drin drei JPanels angeordnet.
Im linken JPanel möchte ich ein Listenfeld haben (JList), das eine Scrollleiste am linken Rand hat, spätestens dann, wenn mehr Einträge drin sind als angezeigt werden kann.
Aber ich mache wohl etwas falsch... die Scrollbar wird nicht bzw. über der Liste angezeigt. Meine Vorgehensweise: (alles Jxxx-Komponenten) Das linke Panel wird dem Frame zugewiesen und angeordnet durch einen GridLayout-Manager(0,3).
Dem Panel wird die Liste per Panel.add(Liste) zugewiesen (dort auch wieder mit GridLayout-Manager). Dann durch JScrollPane jsp = new JScrollPane(Liste); ein ScrollPane-Objekt erstellt. Darauf hin per DefaultListModel model = (DefaultListModel) Liste.getModel(); das model-Objekt und diesem per for-Methode Werte zu gewiesen.

Aber es werden keine ScrollBalken angezeigt :mad: WHY?

Wie muss ich die Verknüpfung machen, was mache ich falsch?

McFraggle
21-12-2005, 09:29
Hi!
Ich verstehe glaube ich nicht ganz, was Du gemacht hast...

So hab ich es verstanden:

- Ein JFrame hat ein Grid-Layout und ist auf drei Spalten gesetzt
- Die linke Spalte soll ein JScrollPane aufnehmen und dieses wiederum eine Liste
- Du hast dem linken Frame ein JPanel zugewisen
- Du legst eine JScrollPane-Instanz an (wo wird die geadded?)
- Dem JScrollPane wird im Konstruktor eine Liste als Content gegeben
- Gleiche Liste wird dem vorhandenem Panel in der linken Spalte geadded

Ist das richtig so?

Wenn ja, ist doch klar, dass das nicht funktionieren kann!:)
Dem Frame statt dem JPanel einfach nur die JScrollPane zugeweisen (nachdem diese mit der Liste als Content konstruiert wurde).

Jor
21-12-2005, 09:58
Hi McFraggle,

du meinst, dass ich das ScrollPane an das JFrame adden soll? Aber wenn die Liste mehr Einträge hat, als angezeigt werden kann, und man scrollt, dann laufen doch die anderen Panels mit ihren Inhalten auch aus dem sichtbaren Bereich, oder? Deshalb bin ich davon ausgegengen, dass das ScrollPane an das Panel muss, höchstens aber an die Liste geadded wird.

McFraggle
21-12-2005, 10:30
Hm. Irgendwie verstehe ich Dich nicht ganz. ScollPane an die Liste adden? Hä?

Also, ich vermute, Du erreichst Dein Ziel nach folgendem Schema:

- Layout-Manager im JFrame setzen
- JList list = new JList(...);
- [Liste initialisieren]
- JScrollPane scrollPane = new JScrollPane(list);
- [scrollPane initialisieren, soweit noch nötig]
- deinFrame.add(scrollPane); //added im GridLayout das scrollPane in erste noch freie Zelle

Jor
21-12-2005, 11:11
Ein ganz dickes :) ! Danke, so gehts!
Mir ist dann auhc grade aufgegangen, dass ich auf das erste Panel verzichten kann.

Jor
21-12-2005, 11:33
Weitere Hilfe nötig...

Aber jetzt habe ich eine neue Frage, nämlich wie kann ich an die Liste den ActionListener des Hauptfenster anbinden, da das Liste-Objket keine Methode dazu bereit stellt?
Wie kann ich dann auswerten ob und ggfs. welcher Eintrag ausgewählt wurde?
Eine Listenerauswertung für Buttons etc. ist schon vorhanden.

McFraggle
21-12-2005, 12:05
Bin mir nich 100%ig sicher, aber ich glaube JList feuert keine ActionEvents. Wenn dem so ist, kann man natürlich auch keinen ActionListener anmelden und eine Methode addActionListener wird man vergebens suchen.

Ähm, könnte es sein, dass es Dir an etwas Referenzmaterial fehl?:)
Wenn ich Dir mal zwei Empfehlungen geben darf:
Online-Buch: http://www.galileocomputing.de/openbook/javainsel4/
und
zum freien Download: http://www.javabuch.de/
Eines der Bücher sollte man Anfangs auch immer in Papierform haben.
Für Swing-Kram gibt es ein super Buch: "Java Swing" / Loy, Eckstein, u.a. / O'Reilly

Grüße
Daniel

Jor
21-12-2005, 12:17
Hallo Daniel,

jep, es fehlt nicht nur am Ref-Material sondern auch an der Übung und Erfahrung mit Java!;)
Danke für die Links und dei Buch Empfehlung, mir ist das Buch "Das Java Codebook" ans Herz gelegt worden, ich bekomme es in einigen Tagen... und solange quäle ich mich so durch den Stoff.
Ich weiss nicht wie viel Swing in diesem Buch (o.g.) vorkommt, werde mir dann auch deine Buchempfehlung zulegen.

McFraggle
21-12-2005, 12:29
Hm, ich glaube das Codebook ist so ein "Kochbuch"-Teil mit einzelnen Lösungen zu bestimmten Problemen (sehr gut ist hier auch das "Java-Kochbuch" von O'Reilly). Solche Bücher sind zwar nützlich, aber eigentlich erst, wenn man sich richtig eingearbeitet hat. Ich würde Dir wirklich zu einem der beiden Grundlagenbücher von Krüger oder Ullenboom raten.
Ich arbeite selber erst seit etwa 1,5 Monaten wirklich mit Java und ohne diese Bücher wäre ich echt am Ar*** gewesen. Genanntes Kochbuch und andere weiterführende Bücher liegen zwar auch auf meinem Tisch, haben aber zur Einarbeitung in Java und auch Swing wenig beigetragen und nutzen mir eher stetig in kleinen Häppchen oder zum tieferen Einarbeiten in spezielle Gebiete (bei mir Swing und die 2D-API).

Jedenfalls viel Erfolg mit Java! Wir werden uns in diesem Forum vielleicht noch häufiger über den Weg laufen... ;)

Jor
21-12-2005, 12:41
Vielen Dank und eine rege Kommunikation immer gerne wieder!:) :)

bischi
21-12-2005, 15:11
Naja - Java-Bücher muss man meiner Meinung nach nicht kaufen - es gibt viele tolle, gratis im Internet verfügbare. Eine kleine Sammlung der besten findest du auf www.walfisch.ch.vu

MfG Bischi

Jor
23-12-2005, 11:12
Danke für den Tipp!:)