G
Guest
Gast
Ich arbeite an einen Zeichenprogramm , daß soweit funktioniert mit Ausnahme der Scrollbars (fehlen noch).
Nun muss ich die Anwendung um eine Scrollpane erweitern, aber ich weiss nicht wie, ich das am besten bewerkstellige.
Wenn ich ein Objekt zeichnen will dass größer als das Zeichenfenster ist , dann soll mit gescrollt werden.
Was muß an den MouseListener geändert werden, damit ich die "tatsächlich" Koordinaten gekomme - und nicht die Koordinaten des geraden sichtbaren Fensterteils -. Ich habe mir zwar die api zur Scrollpane angesehen, bin aber nicht viel schlauer draus geworden wie das für mein Problem anwenden muss.
Die nachfolgende Klasse kapselt die bisherige Zeichencodefunktionalität.
Die Zeichenobjekte werden in einen Stack untergebracht.
Nun muss ich die Anwendung um eine Scrollpane erweitern, aber ich weiss nicht wie, ich das am besten bewerkstellige.
Wenn ich ein Objekt zeichnen will dass größer als das Zeichenfenster ist , dann soll mit gescrollt werden.
Was muß an den MouseListener geändert werden, damit ich die "tatsächlich" Koordinaten gekomme - und nicht die Koordinaten des geraden sichtbaren Fensterteils -. Ich habe mir zwar die api zur Scrollpane angesehen, bin aber nicht viel schlauer draus geworden wie das für mein Problem anwenden muss.
Die nachfolgende Klasse kapselt die bisherige Zeichencodefunktionalität.
Die Zeichenobjekte werden in einen Stack untergebracht.
Code:
class DrawingPanel extends javax.swing.JPanel
{ private Stack zeichenobjekte = new Stack();
private int anzahl_clipp=0;
private Point from=new Point(0,0);
private Point ende=new Point(0,0);
public DrawingPanel()
{
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
from.x=(e.getX());
from.y = (e.getY());
}
public void mouseReleased(MouseEvent e)
{
ende.x = e.getX();
ende.y = e.getY();
System.out.print("from(" + from.getX() + "," + from.getY() + ")");
System.out.print("end(" + e.getX() + "," + e.getY() + ")");
addLinie(add(Line()); }
});
protected void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
super.paintComponent(g);
for (Iterator i = zeichenobjekte.iterator(); i.hasNext();)
{
Object obj = i.next(); ((IZeichenobjekte_all)obj).paint(g);
}
}
}