ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
2483
2483
EMPFEHLEN
-
Moin
Ich hoffe mir kann hier jemand helfen, denn ich bin echt kurz davor in den Tisch zu beißen
.
Folgende Ausgangssituation:
Ein JPanel welche 3 JEditorPanes beinhaltet wird einem JScrollPane hinzugefügt...bisher kein Problem.
Jetzt werden in die EditorPanes Inhalte geladen, damit wird das Panel größer als der JFrame es zulässt und die Scrollbars kommen zum Einsatz...immernoch kein Problem.
ABER: Das ScrollPane wird immer automatisch ganz nach unten gescrollt und muss dann von Hand hochgescrollt werden, was wirklich nervig ist. Der Text soll von oben zu lesen sein und nicht von unten.
Ich hab mir also nen Wolf gegoogelt und auch verschiedene Läsungsvorschläge gefunden...die aber alle nicht Funktionieren ich hab folgendes versucht:
scrollDisPane.getVerticalScrollBar().setValue(scrollDisPane.getVerticalScrollBar().getMinimum());
scrollDisPane.scrollRectToVisible(new Rectangle(1,1,1,1));
scrollDisPane.setViewportView(display);
scrollDisPane.getViewport().setViewPosition(display.getLocation());
jeweils wahlweise mit oder ohne
scrollDispane.updateUI() und/oder scrollDisPane.validate()
scrollDisPane ist das JScrollPane
display ist das JPanel
Wie bekomm ich das verfluchte Teil nach oben gescrollt?
Ich hoffe mir kann jemand helfen, danke schonmal im vorraus
-
Das geht über das BoundedRangeModell:
hoffe das läuft so...PHP-Code:JScrollbar scrollBar = scrollDisPane.getVerticalScrollBar();
BoundedRangeModel brm = scrollBar.getModel();
brm.setValue(0);
Orbit
Oder auf deine Weise:
PHP-Code:scrollDisPane.getVerticalScrollBar().getModel().setValue(0);
Geändert von Orbit (04.07.08 um 23:14 Uhr)
-
Funktioniert leider auch nicht, gleiches Ergebniss wie bei den obigen Methoden...sprich der Balken ist weiterhin runtergescrollt.
Hab auch beide Varianten ausprobiert....
-
hmmm poste mal deinen Code.. bei mir geht das ohne Probleme...
-
private JPanel display;
private JEditorPane topPane;
private JEditorPane editablePane;
private JEditorPane bottomPane;
private JScrollPane scrollDisPane;
[...]
display = new JPanel();
topPane = new JEditorPane();
editablePane = new JEditorPane();
bottomPane = new JEditorPane();
[...]
display.add(topPane, BorderLayout.NORTH);
display.add(editablePane, BorderLayout.CENTER);
display.add(bottomPane, BorderLayout.SOUTH);
scrollDisPane = new JScrollPane(display);
[...]
topPane.setText(topCode);
editablePane.setText(editCode);
bottomPane.setText(bottomCode);
//scrollDisPane.getVerticalScrollBar().setValue(scrollDisPane.getVerticalScrollBar().getMinimum());
// scrollDisPane.scrollRectToVisible(new Rectangle(1,1,1,1));
// scrollDisPane.setViewportView(display);
// scrollDisPane.getViewport().setViewPosition(display.getLocation());
// scrollDisPane.getVerticalScrollBar().getModel().setValue(0);
JScrollBar scrollBar = scrollDisPane.getVerticalScrollBar();
BoundedRangeModel brm = scrollBar.getModel();
brm.setValue(0);
//
scrollDisPane.updateUI();
// scrollDisPane.validate();
[...] da hab ich immer Code weggelassen der nichts mit dem Problem zu tun hat
die auskommentierten Zeilen sind alles Sachen die ich schon ausprobier habe. Ende vom Lied ist immer das die Panes mit den entsprechenden Inhalten einwandfrei angezeigt werden...nur eben das Panel ganz nach unten gescrollt ist
-
Leider immer noch keine neuerung...
Hat keiner ne Idee warum die Sachen nicht anpacken? Liegts vielleicht an den Editorpanes?
-
versuche mal eiun ausführbares Stück Code zu erstellen, der nur die wichtigsten Kompoinenten des Problems beinhaltet und zeigt.. sprich ein Fenster, ein Editor Pane in Scrollpane oder eben so wie der beriehc geplant ist...
es kann auch sein dass dein problem wo ganz anders liegt... Also Problem nach und nach nocheinmal aufbauen und posten wenn dir der Fehler dabei nicht auffällt...
mfg, Orbit
-
Also ich hab jetzt nochmal ne eigene Klasse erstellt nur mit den nötigsten Komponente die ähnlich zu meiner Anwendung ist und das da schön übersichtlich stück für stück gemacht...und es ist das gleiche Problem.
Wie man sieht hab ich unten beides nochmal ausprobiert...aber der Scrollbalken bleibt unten (kann jeder gerne rauskopieren und selbst laufen lassen...einfach in irgendeiner main ein Objekt von TestGUI erzeugen).public class TestGUI extends JFrame implements ActionListener{
//Objekte
private JPanel panel;
private JScrollPane scrollpane;
private JEditorPane editpane1;
private JEditorPane editpane2;
private JEditorPane editpane3;
private JButton button;
private BorderLayout layout;
private String text1;
private String text2;
private String text3;
//Constructor
public TestGUI(){
panel = new JPanel();
scrollpane = new JScrollPane(panel);
editpane1 = new JEditorPane();
editpane2 = new JEditorPane();
editpane3 = new JEditorPane();
button = new JButton("Press");
layout = new BorderLayout(10,10);
panel.setLayout(layout);
panel.add(editpane1, BorderLayout.NORTH);
panel.add(editpane2, BorderLayout.CENTER);
panel.add(editpane3, BorderLayout.SOUTH);
panel.add(button, BorderLayout.AFTER_LAST_LINE);
editpane1.setContentType("text/plain");
editpane2.setContentType("text/plain");
editpane3.setContentType("text/plain");
for (int i = 0; i < 20; i++){
text1 += ("\n!" + i);
}
for (int i = 0; i < 20; i++){
text2 += ("\n*" + i);
}
for (int i = 0; i < 20; i++){
text3 += ("\n#" + i);
}
editpane1.setText("");
editpane2.setText("");
editpane3.setText("");
button.addActionListener(this);
scrollpane.setVisible(true);
panel.setVisible(true);
this.add(scrollpane);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(100,300);
this.setResizable(false);
this.setVisible(true);
}
public void actionPerformed(ActionEvent arg0) {
String actionOrigin = arg0.getActionCommand();
if(actionOrigin.equals("Press")){
editpane1.setText(text1);
editpane2.setText(text2);
editpane3.setText(text3);
scrollpane.getVerticalScrollBar().setValue(scrollpane.getVerticalScrollBar().getMinimum());
scrollpane.getVerticalScrollBar().getModel().setValue(0);
}
}
}
Noch weitere Vorschläge?
-
Ich push das nochmal...kann doch nicht sein das es für so ein "einfaches" Problem keine Lösung gibt oder?
-
29.07.08 17:17 #10
Hallo,
ich habe jetzt deinen Code getestet und ein wenig modifiziert:
Nun wird das ScrollPane jedesmal nach oben gescrollt. Der Nachteil ist: man sieht dann den "Press"-Button nicht mehr.Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[...] public void actionPerformed(ActionEvent arg0) { String actionOrigin = arg0.getActionCommand(); if (actionOrigin.equals("Press")) { editpane1.setText(text1); editpane2.setText(text2); editpane3.setText(text3); SwingUtilities.invokeLater(new Runnable() { public void run() { scrollpane.getVerticalScrollBar().getModel().setValue(0); } }); } } [...]
Also ich würde den Button aus dem gescrollten Panel rausnehmen und ihn eine Ebene höher platzieren.
Grüße
Vincent"Any sufficiently advanced technology is indistinguishable from magic." Arthur C. Clarke.
-
Funktioniert Astrein!
Danke!
-
Hi!
bin auch nochmal über das Problem gestolpert und habe irgendwo (evtl. sogar hier!?) diese Lösung gefunden:
Code java:
Je nachdem, wo man scrollen lassen will, muss das zweite Argument für den Point-Constructor geändert werden...
Funktioniert bei mir weitaus besser als die invokeLater-Variante!
HTH & Gruß
Ähnliche Themen
-
JScrollPane automatisch nach unten scrollen
Von DarthShader im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 22.02.10, 12:48 -
JScrollpane automatisch bis zum ende scrollen
Von Looky im Forum JavaAntworten: 1Letzter Beitrag: 09.01.08, 15:51 -
JScrollPane - Automatisch zu unterstem Punkt scrollen
Von Manuel Hegemann im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 14.11.07, 09:34 -
Scrollpane nach oben scrollen
Von dadom110 im Forum JavaAntworten: 3Letzter Beitrag: 02.03.06, 12:52 -
Nach Iframe laden, wieder nach oben scrollen
Von MediaPlanet im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 28.08.03, 22:15





Zitieren
Login





