Anwendung um Scrollpane erweitern

Status
Nicht offen für weitere Antworten.
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.



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);
			}
		}
	 
}
 

ulrich.fuchs

Neues Mitglied
Das ganze ist gar nicht so schwer:

Erstens, Deine Klasse muss das Interface Scrollable implementieren:

Code:
class DrawingPanel extends javax.swing.JPanel implements javax.swing.Scrollable
Dazu gehören ein paar Methoden, die unter anderem anzeigen, wie weit beispielsweise ein Klick im Scrollbar scrollen soll.

Dann schließt Du Deine Komponente einfach in einem Scrollpane ein:
Code:
JScrollPane scrollPane = new JScrollPane (new DrawingPanel())

und dieses scrollPane fügst Du dann in Deinen dialog oder wo auch immer ein. Um die Koordinatentransformation brauchst Du Dir keine Sorgen zu machen: Dein Listener kriegt die Maus-Koordinaten bezogen auf die linke obere Ecke Deines DrawingPanels.

Hoffe, das hilft
Uli
 
G

Guest

Gast
Hallo,

hmm, folgendes ist aber kniffliger als von ulrich.fuchs geschildert:
Wenn ich ein Objekt zeichnen will dass größer als das Zeichenfenster ist , dann soll mit gescrollt werden.

Gemeint ist doch offenbar dieses Standardverhalten der meisten Grafikprogramme, dass beim Verschieben
oder Ändern der Größe oder neu Aufziehen von Rechtecken etc. die Zeichenfläche automatisch vergrößert
wird und der sichtbare Bereich sich dahin verschiebt.

Ich habe folgende Idee:
- Merke Dir das gerade sichtbare Rechteck (am Viewport der Scrollpane abfragen)
- Vergrößere die Zeichenfläche (Delta bekommst Du ja problemlos über die Mauskoordinaten: Beginn und aktuelle Position beim Ziehen), scrollpane.revalidate() danach ist glaubt ich eine gute Idee
- Berechne die neue maximale Koordinate (wo der Mauszeiger nun auf dem DrawingPanel ist)
- Berechne das neue sichtbare Rechteck
- scrolle dahin mit viewport.scrollRectToVisible(Rechteck)

Das ist alles nur mal eben so Theorie, ausprobiert habe ich das auch noch nicht ...

-> ach ja, regelmäßige repaints nicht vergessen

Ich hoffe, es klappt.

Gruß,

Karl
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
P Swing Anwendung von LayeredPanel AWT, Swing, JavaFX & SWT 6
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
N JavaFX Vor beenden der Anwendung durch klicken von X Dialog zeigen AWT, Swing, JavaFX & SWT 1
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
B JavaFX Wie A4-Seite in meiner Anwendung repräsentieren AWT, Swing, JavaFX & SWT 6
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
OSchriever Anwendung aus SystemTray öffnen AWT, Swing, JavaFX & SWT 29
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
T Anwendung mit X schliessen AWT, Swing, JavaFX & SWT 1
L JavaFX OpenJFX13 Anwendung exportieren AWT, Swing, JavaFX & SWT 7
D PDF Viewer in SWT-Anwendung AWT, Swing, JavaFX & SWT 8
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
J Splashscreen Start Anwendung AWT, Swing, JavaFX & SWT 14
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
D JafaFX Anwendung beenden AWT, Swing, JavaFX & SWT 11
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
X Anwendung skalierbar AWT, Swing, JavaFX & SWT 3
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
V Anwendung im Vollbild zentrieren AWT, Swing, JavaFX & SWT 13
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
P Anwendung kommt nach minimieren nicht mehr in den Vordergrund AWT, Swing, JavaFX & SWT 5
K 3D-Grafik Anwendung von Java in Gnuplot AWT, Swing, JavaFX & SWT 3
M SWT Anwendung in der Symbolleiste verstecken AWT, Swing, JavaFX & SWT 5
B SWT Redesign SWT Anwendung AWT, Swing, JavaFX & SWT 7
M Java anwendung VOR vollbildspielen (schon wieder...) AWT, Swing, JavaFX & SWT 5
S Swing Lauftext Performance Probleme, in größerer Anwendung AWT, Swing, JavaFX & SWT 6
VfL_Freak Swing Zweiter Monitor von Java-Anwendung ansprechbar ?? AWT, Swing, JavaFX & SWT 2
S Swing Ist meine gute Java Anwendung vorgängig? AWT, Swing, JavaFX & SWT 20
P Klassenaufbau bei komplexerer GUI Anwendung AWT, Swing, JavaFX & SWT 14
S Java GUI Anwendung ohne Konsole starten AWT, Swing, JavaFX & SWT 6
qwerqer Swing Anwendung soll blinken (Taskleiste) AWT, Swing, JavaFX & SWT 3
R Java Desktop Anwendung erstellen. Womit? AWT, Swing, JavaFX & SWT 3
eLogic Fullscreen anwendung aus der man nicht rauskommt AWT, Swing, JavaFX & SWT 37
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
H Anwendung schließen ohne System.exit AWT, Swing, JavaFX & SWT 5
R Anwendung ohne Symbol in der Taskleiste AWT, Swing, JavaFX & SWT 3
H SWT RAP Anwendung - Tabelle - Theming AWT, Swing, JavaFX & SWT 3
alderwaran Swing XML editor plugin für eigene anwendung AWT, Swing, JavaFX & SWT 2
G Swing Update-Funktion für Swing-Anwendung AWT, Swing, JavaFX & SWT 5
C Swing Eine SWING-Anwendung mittels MVC AWT, Swing, JavaFX & SWT 4
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
B SWT Hello World-Anwendung mit GUI in Eclipse -Problem mit Import von SWT AWT, Swing, JavaFX & SWT 9
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
J Client Server Anwendung - Mehrere Clients in einer Server GUI AWT, Swing, JavaFX & SWT 11
F Anwendung auf Teskleiste legen AWT, Swing, JavaFX & SWT 3
B MDI Anwendung alle maximierten InternalFrames in Tabs AWT, Swing, JavaFX & SWT 3
T Anwendung starten AWT, Swing, JavaFX & SWT 5
J Anwendung von Swing nach SWT bzw. Eclipse portieren AWT, Swing, JavaFX & SWT 3
2 Tablet-PC Java-Anwendung -> Tablet-Pen Problem !! AWT, Swing, JavaFX & SWT 3
J Swing Anwendung schließen im Listener AWT, Swing, JavaFX & SWT 3
isowiz Vorteil einer RCP Anwendung gegenüber Swing AWT, Swing, JavaFX & SWT 3
? Java-SWT-Anwendung in der Taskleiste nicht sichtbar AWT, Swing, JavaFX & SWT 6
H Netbeans-Anwendung schliessen AWT, Swing, JavaFX & SWT 8
M "Billig Excel" Anwendung mit Swing - Aufwand ? AWT, Swing, JavaFX & SWT 4
G "Views-Abwechseln-Pro " in RCP-Anwendung AWT, Swing, JavaFX & SWT 2
H PopUp-Fenster in einer Java Server Faces Anwendung AWT, Swing, JavaFX & SWT 4
T Auf Fenster innerhalb der Anwendung zugreifen-auch elegant? AWT, Swing, JavaFX & SWT 2
G Organisation Anwendung mit mehreren Eingabedialogen AWT, Swing, JavaFX & SWT 3
H JWindow schließen bei einem Klick außerhalb der Anwendung? AWT, Swing, JavaFX & SWT 19
G SWT DatePicker funzt nicht in eigener Anwendung AWT, Swing, JavaFX & SWT 5
E Bestehende Anwendung erweitern ->JFrame in JPanel verpack AWT, Swing, JavaFX & SWT 4
U Anwendung nicht beenden beim form schliessen? AWT, Swing, JavaFX & SWT 6
T "Echte" MDI Anwendung AWT, Swing, JavaFX & SWT 4
G Auf markierten Text einer anderen Anwendung zugreifen. AWT, Swing, JavaFX & SWT 8
G Relativer Pfad in Rich Client Anwendung AWT, Swing, JavaFX & SWT 4
N Keyboard-Shortcut, der in der ganzen Anwendung funktioniert AWT, Swing, JavaFX & SWT 2
D JDIC Browser in SWT/JFace Anwendung nutzen AWT, Swing, JavaFX & SWT 2
J Swing-Anwendung mit ActionListener AWT, Swing, JavaFX & SWT 7
S Anwendung über Button beenden? AWT, Swing, JavaFX & SWT 4
O Anwendung aus dem Programm heraus neu starten AWT, Swing, JavaFX & SWT 2
U Anwendung mit mehreren "Fenstern" AWT, Swing, JavaFX & SWT 4
R Screenshot von fremder Anwendung AWT, Swing, JavaFX & SWT 4
Hotkey Freie Icons für Anwendung mit Java Look&Feel AWT, Swing, JavaFX & SWT 4
S SWT-Anwendung als startfähiges Jar unter Linux AWT, Swing, JavaFX & SWT 4
P GUI geschickt von dem Rest der Anwendung trennen AWT, Swing, JavaFX & SWT 6
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
A Screenshot einer Anwendung erstellen AWT, Swing, JavaFX & SWT 14
A MVC-Pattern - Kreuzweise Anwendung? AWT, Swing, JavaFX & SWT 4
M Komponenten einer Anwendung in JTree strukturiert auflisten? AWT, Swing, JavaFX & SWT 4
A Look and Feel einer Anwendung verändern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben