SWT probleme beim einbinden von Images

crazyharry89

Mitglied
Halli Hallo,
ich muss gerade eine Anwedung programieren, mit der man den Text, der auf einem Image steht
auslesen kann. Dies nur für eure Kenntnis.
Ich stehe aber nun noch ziemlich am Anfang und habe deahlb erst einmal 2 Fragen.

Frage1:

Meine shell ist in eine Linke Seite und eine Rechte Seite durch einen Sash unterteilt.
Beim start öffnet es ein neuen FileDialog und ich kann das Image auswählen.
Dies wird dann auf der rechten Seite in einem Canvas angezeigt. Nun meine Frage.
Gibt es eine Möglichkeit, das Bild mit dem Sash zu skalieren.
Anders gesagt, ich möchte, dass mein Bild kleiner wird,
wenn ich den Sash in Richtung des Images schiebe und größer wenn er sich davon entfernt.
Bisher ist es so geregelt, das ein ScrollBar erscheint, wenn ich den Sash ins Fenster hinein Bewege.
Für eine bessere Usability muss es jetzt über die Skalierung gehandhabt werden.

Frage2:

Bei dem Projekt geht es darum, Anträge und so zu digitalisieren und zu Überprüfen. Da so ein Antrag
ja auch aus mehreren Seiten Besteht, müsste ich auch mehrere Seiten in das Canvas laden.
Diese sollen dabei einfach untereinander aneinander gereit werden. Bei diesem Thema habe ich
allerdings nicht einmal ein Ansatz. Wie lade ich mehrere Bilder in das Canvas?

Hier mal der Code der bis jetzt verwendet wird:
(Der vertikale Scrollbalken ist bereits auskommentiert, da ich ihn ja theoretisch nicht mehr brauche,
wenn das Bild skalliert wird)
Java:
SashForm sashForm = new SashForm(shell, SWT.HORIZONTAL);
			sashForm.setVisible(true);
		
				Composite linkeSpalte = new Composite(sashForm, SWT.None);
				linkeSpalte.setLayout(new FillLayout(SWT.NONE));
				linkeSpalte.setBackground(new Color(display, 31, 133, 31));
				//Bild laden
				
				Image orginalImage = null;
				FileDialog FD = new FileDialog(shell, SWT.NONE);
				FD.setText("Pfad angeben");
				String string = FD.open();
				
				if (string != null)
					{
						orginalImage = new Image(display, string);
					}
				if (string == null)
					{
						int width = 150, height = 200;
						orginalImage = new Image (display, width, height);
						GC gc = new GC (orginalImage);
						gc.fillRectangle(0, 0, width, height);
						gc.drawLine(0, 0, width, height);
						gc.drawLine(0, height, width, 0);
						gc.drawText("Image not FOUND", 0, 0);
						gc.dispose();
					}
				final Image image = orginalImage;
				final Point origin = new Point (0, 0);
				final Canvas canvas = new Canvas (linkeSpalte, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL);
				
				//Horizontal Scroll -> Canvas
				/*
				final ScrollBar CanvasScrollH = canvas.getHorizontalBar();
				CanvasScrollH.addListener
					(SWT.Selection, new Listener()
									{
										public void handleEvent (Event e)
										{
											int hSelection = CanvasScrollH.getSelection();
											int destX = -hSelection - origin.x;
											Rectangle rectangle = image.getBounds();
											canvas.scroll(destX, 0, 0, 0, rectangle.width, rectangle.height, false);
											origin.x = -hSelection;
										}
									}
					);
				*/
				//Vertical Scroll -> Canvas
				final ScrollBar CanvasScrollV = canvas.getVerticalBar();
				CanvasScrollV.addListener
					(SWT.Selection, new Listener()
									{
										public void handleEvent (Event e)
										{
											int vSelection = CanvasScrollV.getSelection();
											int destY = -vSelection - origin.y;
											Rectangle rectangle = image.getBounds();
											canvas.scroll(0, destY, 0, 0, rectangle.width, rectangle.height, false);
											origin.y = -vSelection;
										}
									}
					);
				
				canvas.addListener (SWT.Resize,  new Listener () {
					public void handleEvent (Event e) {
						Rectangle rect = image.getBounds ();
						Rectangle client = canvas.getClientArea ();
						//CanvasScrollH.setMaximum (rect.width);
						CanvasScrollV.setMaximum (rect.height);
						//CanvasScrollH.setThumb (Math.min (rect.width, client.width));
						CanvasScrollV.setThumb (Math.min (rect.height, client.height));
						int hPage = rect.width - client.width;
						int vPage = rect.height - client.height;
						//int hSelection = CanvasScrollH.getSelection ();
						int vSelection = CanvasScrollV.getSelection ();
						/*
						if (hSelection >= hPage) {
							if (hPage <= 0) hSelection = 0;
							origin.x = -hSelection;
						}
						*/
						if (vSelection >= vPage) {
							if (vPage <= 0) vSelection = 0;
							origin.y = -vSelection;
						}
						canvas.redraw ();
					}
				});
				
				canvas.addListener (SWT.Paint, new Listener () {
					public void handleEvent (Event e) {
						GC gc = e.gc;
						gc.drawImage (image, origin.x, origin.y);
						Rectangle rect = image.getBounds ();
						Rectangle client = canvas.getClientArea ();
						int marginWidth = client.width - rect.width;
						if (marginWidth > 0) {
							gc.fillRectangle (rect.width, 0, marginWidth, client.height);
						}
						int marginHeight = client.height - rect.height;
						if (marginHeight > 0) {
							gc.fillRectangle (0, rect.height, client.width, marginHeight);
						}
					}
				});
 

Stelufl

Mitglied
Hi.

Wenn Du ein Pic direkt auf ein Canvas malst, weiß das Canvas erstmal nicht, was du überhaupt da drauf gemalt hast. Du müsstest einen Resizelistener auf die rechte Spalte setzen und musst dann dein Bild selbst komplett neu auf das Canvas malen. Das wird sehr CPU lastig werden, da ein Resize Event viele Male pro Sekunde gefeuert wird.

Besser wäre es nach meiner Meinung, das Bild innerhalb eines LayoutManagers (z. B. GridLayout) als Widget hinzuzufügen, genauer gesagt als Label mit
Code:
label.setImage(Image img);
Dem LayoutManager sagst du dann
Code:
GridDataFactory.fillDefaults().grab(true, true).applyTo(label);

Was Dein Label über den gesamten Platz seines eigenen Containers streckt. Wenn Du das Label also in eine Composite packst, muss auch die Composite gestreckt werden.

Beachte aber, dass das Bild dann nur bis maximal zur Originalgröße gestreckt wird.

Das wäre auch schon fast die Antwort für beide Fragen.
Weitere Bilder fügst du ebenso als Label unten drunter ein. Das macht der LayoutManager dann ganz automatisch, wenn dein GridLayout das Attribut numColumns = 1 hat. Wenn 2, dann kommt das nächste Bild daneben und das dritte wieder unten drunter usw.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
D Swing Probleme beim Anzeigen der einzelnen Komponenten AWT, Swing, JavaFX & SWT 16
N Probleme beim positionieren von Elementen AWT, Swing, JavaFX & SWT 2
A Probleme beim FocusListener AWT, Swing, JavaFX & SWT 6
L Probleme beim Refresh von JTable AWT, Swing, JavaFX & SWT 7
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
K JList-Probleme beim Hinzufügen von Elementen AWT, Swing, JavaFX & SWT 3
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
R Probleme beim Zeichnen eines Koordinatensystems AWT, Swing, JavaFX & SWT 10
M Probleme beim Bild einfügen in CenterPanel AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
S Probleme beim Neuzeichnen eines JLabels AWT, Swing, JavaFX & SWT 6
W Probleme beim Erstellen einer Tabelle AWT, Swing, JavaFX & SWT 2
T Probleme beim Resizen einer JScrollPane AWT, Swing, JavaFX & SWT 2
M Probleme beim Hinzufügen von Objekten zu getContentPane() AWT, Swing, JavaFX & SWT 2
G Probleme beim Panelstruktur AWT, Swing, JavaFX & SWT 13
E Probleme beim Layout! AWT, Swing, JavaFX & SWT 8
E Probleme beim Layout mit Buttons und CheckboxGroup AWT, Swing, JavaFX & SWT 9
S Probleme beim Laden und Speichern von Dateien AWT, Swing, JavaFX & SWT 6
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
C Probleme beim ausführen von Programmen mit Fenstern+Inhalt AWT, Swing, JavaFX & SWT 3
Q JTextPane / Probleme beim Einfügen von <br>-Tags AWT, Swing, JavaFX & SWT 2
G Probleme beim Lösen einer Übungsaufgabe AWT, Swing, JavaFX & SWT 5
C Probleme beim 2. öffnen eines Fensters AWT, Swing, JavaFX & SWT 5
A Probleme beim Ausdrucken AWT, Swing, JavaFX & SWT 4
V Probleme beim Scrollen ein JPanels mit JScrollPane AWT, Swing, JavaFX & SWT 2
R Probleme beim Wiederherstellen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben