N
NickK
Gast
Hallo zusammen,
ich habe ein sehr nerviges Problem.
Ich erstelle eine ScrollPane und möchte mit der Paint-Methode beispielsweise 500
Wörter untereinanderschreiben.
Die ScrollPane soll sich natürlich anpassen.
Nun das Problem:
Die ScrollPane passt sich erst dann an, wenn ich mit der Maus die Größe des Fenster ändere.
Ich vermute, dass in der Klasse Viewer(Siehe Code) getPreferredSize nur am Anfang aufgerufen wird.
Zur Veranschaulichung noch kurz der Code:
Ich hoffe Ihr könnt mir helfen.
Vielen Dank schonmal im Voraus.
Schöne Grüße aus Regensburg
ich habe ein sehr nerviges Problem.
Ich erstelle eine ScrollPane und möchte mit der Paint-Methode beispielsweise 500
Wörter untereinanderschreiben.
Die ScrollPane soll sich natürlich anpassen.
Nun das Problem:
Die ScrollPane passt sich erst dann an, wenn ich mit der Maus die Größe des Fenster ändere.
Ich vermute, dass in der Klasse Viewer(Siehe Code) getPreferredSize nur am Anfang aufgerufen wird.
Zur Veranschaulichung noch kurz der Code:
Code:
import java.awt.*;
import java.awt.event.*;
public class Example2210
extends Frame
{
public static void main(String[] args)
{
Example2210 wnd = new Example2210();
wnd.setLocation(200,100); //Windowsposition festlegen
wnd.setVisible(true);
}
public Example2210()
{
super("Example2210");
setBackground(Color.WHITE);
//ScrollPane für die automatische Anpassung der Scrollbar
ScrollPane sc = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
sc.add(new Viewer());
sc.getVAdjustable().setUnitIncrement(1);
sc.getHAdjustable().setUnitIncrement(1);
sc.setSize(200,200); //Startgröße festlegen
add(sc);
sc.setPreferredSize(new Dimension(200,700));
add(sc);
//Window-Listener
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent event)
{
setVisible(false);
dispose();
System.exit(0);
}
}
);
//Dialogelement anordnen
pack();
}
}
class Viewer
extends Canvas
{
int i;
public void paint(Graphics g)
{
for(i = 0; i<500; i++)
{
g.drawString("hallo" + i,30,30+20*i);
}
}
public Dimension getPreferredSize()
{
return new Dimension(150,16 + i* 20); //Pro zeile müssen 20 zur Verfügung gestellt werden
}
}
Ich hoffe Ihr könnt mir helfen.
Vielen Dank schonmal im Voraus.
Schöne Grüße aus Regensburg