JPanel auto scrollen

ZAntjeZ

Mitglied
Hallo,

Ich moechte in einem JPanel eine Scrollbar erscheinen lassen, die automatisch mit nach unten scrollt, wenn das Fenster zum malen nich ausreicht.
Mein Klasse "Leinwand" erbt von JPanel und beinhaltet die paintComponent.
Anfangs hatte ich die JPanel-Klasse einfach so in das ScrollPanel eingefuegt, ohne die VertikaleScrollbar extra zu definieren, da ging das Scrollen aber gar nicht.
Dann musste ich in meinem JPanel noch eine feste Groesse angeben, damit die Scrollbar ueberhaupt erscheint.
Das dumme ist nur, dass ich vorher nicht weiss, wie gross das JPanel werden wird. Die Groesse soll dynamisch vergroessert werden, wenn das Gemalte drueberhinaus reicht, und die Scrollbar soll automatisch mit scrollen.
Was muss ich bei mir da machen?

Code:
leinwand=new Leinwand() ;
leinwand.setBorder(BorderFactory.createEtchedBorder());
leinwand.setBackground(Color.WHITE);
leinwand.setPreferredSize(new Dimension (sizeBreite,800));

jsp=new JScrollPane(leinwand);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

cp.add(jsp,BorderLayout.CENTER);

Danke fuer jeden Tip!
 
Leider ist mir nur sehr unscharf, was Du genau machen möchtest.
Ich verstehe Dich folgerndermaßen:
Der anwender malt etwas und zeichnet dabei über die Größe des Panels auf dem gemalt wird. Wenn dies passiert soll sich das Panel vergrößern und entsprechend gescrollt werden.
Falls Meine Annahmen da richtig sind was Deine Ansprüche angeht dann würde ich strategisch so vorgehen:

Ein Mouselistener oder MouseMoveListener (oder wie die Teile heißen), der an das betroffene Panel, welches sich dynamsich vergrößern soll, angehängt ist, erkennt wann der Mauszeiger gedrückt über die Grenze des Panels gelangt.
Wenn dies der Fall ist, werden weitere Vertikalbewegungen in dem Listener verwendet um die Größe des Panels zu erweitern, versuche es da mit setSize() oder setPreferedSize().

eigentlich sollte das dann hoffnungsvoll funktionieren.

viel Glück
 
Zurück