ViewportView der JScrollPane - welche Method synchronisiert?

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hallo,

ich habe ein JScrollPane, dessen ViewPortView eine JList ist. Die arbeiten auch korrekt zusammen, sprich
wenn die Liste zu lang für das Fenster wird, kommt ne Scrollbar etc.

Aber ich möchte das etwas anpassen, und zwar dahingehend, dass die vertikale Scrollbar automatisch mitscrollt.
es gibt zwar setAutoscrolls(boolean), aber das macht es nicht (kA was das macht).

Jetzt wollte ich das quasi per Hand machen, es muss ja innerhalb der JScrollPane Klasse irgendeine Methode/Listener
geben, der sich mit dem ViewPortView, also hier der JList, synchronisiert, damit sich das updatet.

Und diese Methode suche ich, damit ich sie überschreiben kann um sie so anzupassen, dass die ScrollBar mitgeht.

Also pseudo-Code:

Code:
public void viewPortViewListener(){
           super.viewPortViewListener();
           getVerticalScrollBar().setCaretPosition(blabla whatever));
}

Oder stelle ich mir dieses ganze Konzept falsch vor, und so eine Methode gibt es doch nicht? Muss ja eigentlich,
sonst kann ich mir gar nicht vorstellen wieso solche Dinge in Java überhaupt gehen...

Kann mir da jemand helfen bitte?
 
M

Michael...

Gast
hdi hat gesagt.:
dass die vertikale Scrollbar automatisch mitscrollt
Was bedeutet denn automatisch mitscrollen? Aufgrund welches Ereignisses soll wohin und wie weit gescrollt werden?
 

hdi

Top Contributor
der JScrollPane gebe ich eine JList in den Konstruktor, das ist ja das gleiche wie setViewportView(JList).

Das Ereignis soll immer eintreten, wenn die JList verändert wurde (bei mir gibt es nur eine Art der Veränderung, und das ist das Adden einer neuen Zeile in der Liste).

Die ScrollPane ruft ja irgendwie jedesmal eine Methode auf, wenn sich die JList verändert, sonst wüsste sie ja zB auch nicht, wann sie die ScrollBar einblenden muss, weil die Liste jetzt das Fenster sprengt.
Und diese MEthode suche ich, um dort einzufügen, dass die ScrollBar nachzieht. NAchzieht heisst einfach:

Code:
scrollbar.setCarotPosition(liste.length())

oder sowas in der Art, es soll halt einfach immer nach ganz unten gescrollt sein, auf den letzten Eintrag
 

hdi

Top Contributor
äh ich glaub du hast meinen ersten post nicht ganz gelesen ;)

der von dir gepostete code setzt zwar die scrollbar nach unten, aber wo sollte ich das denn ausführen, und wann?
ich muss das irgendwo rein packen, in eine methode, die aufgerufen wird im rahmen der synchronisation zwischen der jlist und dem scrollpane. so eine methode muss es ja intern geben...

und diese methode suche ich: Die, die das Synchronisiert. Welche ist das, ist die fRage?
 

Verjigorm

Top Contributor
Achso....
Da gibts viele Möglichkeiten:

1) Da wo du add() bzw. addElement() oder remove() etc. auf deiner Liste aufrufst

2) Componentlistener auf die JList mit componentResized()

oder die für mich grade am logischsten klingende Variante:
3)Containerlistener auf die Jlist mit componentAdded()
 

hdi

Top Contributor
hey, danke :)

mit dem componentResized() klappt es. componentAdded() vom ContainerListener hatte ich zuerst versucht, die Methode wurde aber nie aufgerufen. Naja Problem ist gelöst, danke dir
 

hdi

Top Contributor
äh ich muss jetz doch nochmal wegen etwas nachhaken:

Und zwar such ich grad die Methode, die aufgerufen wird jedesmal wenn der Liste etwas hinzugefügt wird.
Ich meine jetzt nicht die auf Seiten des Models (addElement()) sondern die auf Seiten von der Liste.

Konkret: Ich möchte jedesmal, wenn ein neuer Eintrag in die Liste kommt, diesen automatisch markireen,
also setSelected() setzen.
Ich hab jetz alle möglichen Listener ausprobiert, aber keiner reagiert...

dein Container-Listener ebne auch nicht, deshalb wollte ich jetzt nochmal nachfragen warum, und wie
ich mein Problem realisieren kann.

Danke
 

Verjigorm

Top Contributor
Ok, hab mich jetzt mal mit der Frage kurz beschäftigt ;)

Lösung:
ListDataListener() aufs Model, mit intervalAdded(...)

Code:
		model.addListDataListener(new ListDataListener() {

			@Override
			public void contentsChanged(ListDataEvent e) {
				// TODO Auto-generated method stub
				System.out.println("changed");
			}

			@Override
			public void intervalAdded(ListDataEvent e) {
				// TODO Auto-generated method stub
				list.setSelectedIndex(model.getSize()-1);
			}

			@Override
			public void intervalRemoved(ListDataEvent e) {
				// TODO Auto-generated method stub
				System.out.println("removed");
			}
			
		});
 

hdi

Top Contributor
Hey, danke funktioniert Prima.

War zwar erst etwas skeptisch (bins immer noch...) weil jetzt nutzt mein Model die Liste, die Liste nutzt das Model,
und mein Code ist sowieso schon der Obergau in Sachen Übersichtlichkeit. Alles benutzt jetzt so ungefähr alles bei mir :/

Ist zwar jetzt OT, aber mich würde interessieren ob ihr paar Links habt oder sowas wo man etwas
über das Designen lernt? Ich meine man kriegt ein Programm eigentlich immer dazu, das zui machen was es sollte. Nur es ist dann schlecht gecodet, und irgendwas im Nachhinein ändern oder verbessern kann man vergessen...

Ich will mir möglichst schnell angewöhnen GUT zu coden, leider gibts dafür wohl kein Kochrezept ?
Eig. geht das jetz auf die gleiche Frage zurück wie ich in diesem Topic gestellt habe:

http://www.java-forum.org/de/viewtopic.php?p=458920#458920

Ich bin jetz bald mit meinem Programm komplett fertig, sind 7 Klassen, insgesamt ca 600-700 Zeilen Code.
Kann man irgendwo sein kompletten Code reinstellen (natürlich mit javadoc kommentiert!) und es kuckt
mal einer drüber und gibt Design Tips, was man einfach nur design technisch besser/schlauer machen könnte, ich
denke da an Klassen-Abähngigkietne, Sichtbarkeit etc etc.

Oder is sowas zu dreist :bae: ich würd sogern lernen wie man GUT programmiert und nicht nur so, dass e shalt irgendwie funktioniert.. Leider weiss ich nich so Recht was ich jetz machen soll, um dieses Problem zu lösen.

Vllt kennt ihr da Anlaufstellen?

(Was ich eigentlich sagen will: Wenn ich hier 700 Zeilen code poste, kuckt sich das einer an und gibt mir Tipps wie ich das verbessern kann? Schicke demjenigen dann auch ne Packung Kekse :p)
 

Audio Anarchy

Aktives Mitglied
Nochmal eine Frage zur JScrollPane. Ich habe eine Tabelle fester Größe in meinem JScrollPane. Die JScrollpane soll per Default immer ca. zur hälfte nach unten gescrollt sein, so dass man die mitte meiner Tabelle sieht?
Ist das irgendwie möglich?
Danke
 

hdi

Top Contributor
du implementierst in deiner tabelle das ComponentListener Interface und überschreibst dann die Methode:

Code:
@Override
	public void componentResized(ComponentEvent arg0) {
	
			JScrollBar ver = myScrollPane.getVerticalScrollBar();
			ver.setValue(ver.getMaximum() / 2);
	}

So hatte ich das gelöst, natürlich muss dann deine Tabelle das ScrollPane kennen, in dem es liegt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
MaxG. Swing JScrollPane AWT, Swing, JavaFX & SWT 10
Soloeco Swing JScrollPane AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
Bluedaishi JScrollpane AWT, Swing, JavaFX & SWT 0
L JScrollPane scrollt nicht !! AWT, Swing, JavaFX & SWT 3
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
F JTable mit JScrollPane AWT, Swing, JavaFX & SWT 4
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
B Swing JPanel in JScrollPane einfügen AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Transparentes JScrollPane AWT, Swing, JavaFX & SWT 0
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
K Bug in JScrollPane? AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
M JScrollPane Header AWT, Swing, JavaFX & SWT 3
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
V LayoutManager JScrollPane verwirft Elementanordnung AWT, Swing, JavaFX & SWT 3
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane AWT, Swing, JavaFX & SWT 7
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
C jPanel auf jScrollPane zentrieren AWT, Swing, JavaFX & SWT 3
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Swing Korrekte JTable.rowAt(point) für JTable in JScrollPane AWT, Swing, JavaFX & SWT 5
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
S JScrollPane reagiert nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane zu JTable hinzufügen AWT, Swing, JavaFX & SWT 16
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
P Swing JScrollpane AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
J JScrollPane Probleme AWT, Swing, JavaFX & SWT 3
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
D Swing JTable in JScrollpane beliebig verbreitern AWT, Swing, JavaFX & SWT 5
A Swing Anzeige Text in JScrollpane AWT, Swing, JavaFX & SWT 8
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
S Swing JScrollpane und ViewPort AWT, Swing, JavaFX & SWT 4
D JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 12
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
H jscrollpane AWT, Swing, JavaFX & SWT 12
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
B JScrollPane Problem AWT, Swing, JavaFX & SWT 25
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
G Swing Höhe des View eines JScrollPane fest auf Höhe des JScrollPane setzen! AWT, Swing, JavaFX & SWT 4
A JScrollPane AWT, Swing, JavaFX & SWT 16
C Swing JScrollPane und Scroll-Geschwindigkeit AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben