AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom

simmerl74

Mitglied
Hallo,

versuche mittel eines Java-Programms Panorama-Bilder zu laden und anzuzeigen.
Bei der Anzeige soll ein Verschieben (Translation), ein Zoomen in beiden Achsen (Scale) und ein unabhängiges Stretchen der Bildbreite möglich sein.
Dies funktioniert auch soweit. Jedoch ab einer bestimmten Kombination aus Bildgröße und Zoomfakor verschwindet das Bild aus der Anzeige.
Verwendet man sehr sehr große Bilder werden die Bilddaten geladen aber kein Bild angezeigt.
Ich habe schon nach Beschränkungen bei Verwenden der AffinenTransformation gesucht aber denke da bewege ich mich noch im Rahmen.

Verwendetes Bild: Pano1.jpg
Zoom-Wert ab der das Bild verschindet 600% bei einem Stretch-Wert von 300%

Bei Bild Pano2.jpg wird gar kein Bild angezeigt.

Die Bilder:

Pano1.jpg

Pano2.jpg

Mein Eindruck ist dass es ein Problem gibt sobal einer der Werte >32768 ist klappt es nicht mehr wobei die Transformationsmatrix eigentlich als double deklariert ist.

[ sx 0 tx ]
[ 0 sy ty ]
[ 0 0 1 ]

Für eine Hilfe wäre ich sehr dankbar, da ich hier irgendwie nicht weiterkomme.
 

Anhänge

  • ImageZoomer.java
    847 Bytes · Aufrufe: 1
  • PicturePanel.java
    14,7 KB · Aufrufe: 1

Blender3D

Top Contributor
Dies funktioniert auch soweit. Jedoch ab einer bestimmten Kombination aus Bildgröße und Zoomfakor verschwindet das Bild aus der Anzeige.
Verwendet man sehr sehr große Bilder werden die Bilddaten geladen aber kein Bild angezeigt.
Ich habe schon nach Beschränkungen bei Verwenden der AffinenTransformation gesucht aber denke da bewege ich mich noch im Rahmen.
Bei mir funktioniert der Code. Ich denke dass es sich um ein Speicherproblem handelt.
Verwende ich eine 32 -Bit VM. Bekomme ich eine OutofMemory Exception beim 2ten Bild.
Ich habe deinen Code etwas überarbeitet, um ihn etwas übersichtlicher zu gestalten und lasse zusätzlich den freien Speicher vor dem Laden und nach dem Laden der Grafik anzuzeigen. Beim 1ten Bild geht sich bei mir der Speicher gerade noch aus. Das bedeutet ich kann maximal skalieren und zoomen.
[CODE lang="java" title="ImageZoomer"]import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ImageZoomer {
public static boolean DEBUG = false;

final static String filename = "Pano2.jpg";

public static void main(String[] args) throws InterruptedException {
showMemory();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JFrame frame = new JFrame("PicturePanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PicturePanel ucpanel = new PicturePanel(filename, 425);
frame.getContentPane().add(ucpanel, BorderLayout.CENTER);
frame.setSize(new Dimension(1920, 600));
frame.setVisible(true);
}
});
Thread.sleep(2000);
showMemory();
}

public static void showMemory() {
Runtime rt = Runtime.getRuntime();
long totalMem = rt.totalMemory();
long maxMem = rt.maxMemory();
long freeMem = rt.freeMemory();
double megs = 1048576.0;
System.out.println("------------------------------------------------");
System.out.println("Total Memory: " + totalMem + " (" + (totalMem / megs) + " MiB)");
System.out.println("Max Memory: " + maxMem + " (" + (maxMem / megs) + " MiB)");
System.out.println("Free Memory: " + freeMem + " (" + (freeMem / megs) + " MiB)");
}
}[/CODE]

[CODE lang="java" title="TransformParam Containerklasse mit Hilfsfunktionen"]import java.awt.Dimension;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;

public class TransformParam {
double translateX = 0;
double translateY = 0;
double scaleX = 1;
double scaleY = 1;
double stretchX = 1;
double prescaler = 1;

public void fitInRangeTranslateX(double min, double max) {
if (translateX < min)
translateX = min;
else if (translateX > max)
translateX = max;
}

public void fitInRangeTranslateY(double min, double max) {
if (translateY < min)
translateY = min;
else if (translateY > max)
translateY = max;
}

public AffineTransform getAffineTransFormParam(BufferedImage image, Dimension dim) {
AffineTransform at = new AffineTransform();
double t1x = -(double) image.getWidth(null) / 2 * scaleX * prescaler;
double t1y = -(double) image.getHeight(null) / 2 * scaleY * prescaler;
double sx = scaleX * prescaler;
double sy = scaleY * prescaler;
double t2x = (double) dim.width / 2 / scaleX / prescaler;
double t2y = (double) dim.height / 2 / scaleY / prescaler;

if (ImageZoomer.DEBUG)
System.out.println("T1X: " + t1x + "\tT1Y: " + t1y + "\tSX: " + sx + "\tSY: " + sy + "\tT2X: " + t2x
+ "\tT2Y: " + t2y);

// // the prescale, stretch_x and zoom transformation
at.setToIdentity();
at.translate(t1x, t1y);
at.scale(sx, sy);
at.translate(t2x, t2y);
// The panning transformation
at.translate(translateX, translateY);
return at;
}

public void reset() {
translateX = translateY = 0;
scaleX = scaleY = stretchX = prescaler = 1;
}

@Override
public String toString() {
return "translateX: " + translateX + "\ttranslateY: " + translateY + "\tstretchX: " + stretchX + "\tscaleX: "
+ scaleX + "\tscaleY: " + scaleY + "\tprescaler: " + prescaler;
}
}[/CODE]
[CODE lang="java" title="PicturePanel"]import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JSlider;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class PicturePanel extends JPanel {
private static final long serialVersionUID = 1L;
private static final int MIN_ZOOM = 100;
private static final int MAX_ZOOM = 1000;

private PanAndZoomCanvas canvas;
private JSlider zoomSlider;
private JSlider horizontalScaleSlider;
private int zoomPercent = 100;
private TransformParam param = new TransformParam();

public PicturePanel(String imagename, int height) {
setPreferredSize(new Dimension(1840, height));
setBackground(Color.DARK_GRAY);
createComponents(imagename, height);

JLabel zoomSliderLabel = new JLabel("Zoom", JLabel.CENTER);
zoomSliderLabel.setForeground(Color.white);
JLabel horizontalScaleSliderLabel = new JLabel("Stretch", JLabel.CENTER);
horizontalScaleSliderLabel.setForeground(Color.white);

JSeparator separator = new JSeparator(SwingConstants.VERTICAL);
Dimension sDimension = new Dimension(100, 0);
separator.setPreferredSize(sDimension);
separator.setMaximumSize(sDimension);

add(separator);
add(zoomSliderLabel);
add(zoomSlider, BorderLayout.NORTH);
add(horizontalScaleSliderLabel);
add(horizontalScaleSlider, BorderLayout.NORTH);
add(canvas, BorderLayout.SOUTH);
}

public void createComponents(String imagename, int height) {
PanningHandler panner = new PanningHandler();
canvas = new PanAndZoomCanvas(imagename, height);
canvas.addMouseListener(panner);
canvas.addMouseMotionListener(panner);
canvas.setBorder(BorderFactory.createLineBorder(Color.black));
canvas.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
int notches = e.getWheelRotation();
int zoomStep = 50;
// Don't scale below 100% and above 1000%
if (notches > 0 && zoomPercent == MIN_ZOOM || notches < 0 && zoomPercent == MAX_ZOOM)
return;
zoomStep = (zoomPercent >= 300 && notches != 0) ? 50 : 20;
zoomPercent += notches < 0 ? zoomStep : -zoomStep;
zoomSlider.setValue(zoomPercent);
}
});

// code for handling zooming
zoomSlider = new JSlider(JSlider.HORIZONTAL, MIN_ZOOM, MAX_ZOOM, MIN_ZOOM);
zoomSlider.setMajorTickSpacing(200);
zoomSlider.setMinorTickSpacing(100);
zoomSlider.setPaintTicks(true);
zoomSlider.setPaintLabels(true);
zoomSlider.setToolTipText("Zoom");
zoomSlider.addChangeListener(new ScaleHandler());
zoomSlider.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
zoomSlider.setValue(100);
param.translateX = 0;
param.translateY = 0;
param.scaleX = 1;
param.scaleY = 1;
repaint();
}
}
});

// Slider for horizontal scaling
horizontalScaleSlider = new JSlider(JSlider.HORIZONTAL, 0, 500, 100);
horizontalScaleSlider.setMajorTickSpacing(100);
horizontalScaleSlider.setMinorTickSpacing(50);
horizontalScaleSlider.setPaintTicks(true);
horizontalScaleSlider.setPaintLabels(true);
horizontalScaleSlider.setToolTipText("Horizontal Stretch");
horizontalScaleSlider.addChangeListener(new HorizontalScaleHandler());
horizontalScaleSlider.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
horizontalScaleSlider.setValue(100);
}
}
});
}

public double getStretch_X() {
return param.stretchX;
}

public double getTranslateX() {
return param.translateX;
}

public double getTranslateY() {
return param.translateY;
}

public int getZoomPercent() {
return zoomPercent;
}

public void setStretch_X(double value) {
param.scaleX = value;
horizontalScaleSlider.setValue((int) (param.stretchX * 100));
repaint();
}

public void setTranslateX(double value) {
param.translateX = value;
this.repaint();
}

public void setTranslateY(double value) {
param.translateY = value;
this.repaint();
}

public void setZoomPercent(int value) {
zoomPercent = value;
zoomSlider.setValue(zoomPercent);
this.repaint();
}

class PanAndZoomCanvas extends JComponent {
public final int MAX_IMG_HEIGHT;
private static final long serialVersionUID = 1L;
private String ucImageURL;
private BufferedImage image = null;

PanAndZoomCanvas(String ucimagename, int height) {
MAX_IMG_HEIGHT = height;
param.reset();
ucImageURL = ucimagename;
}

@Override
public Dimension getPreferredSize() {
return getParent().getPreferredSize();
}

public boolean loadImage() {
if (ucImageURL == null || ucImageURL.length() < 2) // invalid URL
return false;
try {
image = ImageIO.read(new File(ucImageURL));
if (ImageZoomer.DEBUG && image != null)
System.out.println("Loaded new image: " + ucImageURL + "\tWidth: " + image.getWidth() + "\tHeight: "
+ image.getHeight());
} catch (IOException e) {
System.out.println("Unable to load file: " + ucImageURL.toString());
return false;
}
return true;
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
if (image == null && !loadImage())
return;
Graphics2D g2D = (Graphics2D) g;
g2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

double translate_x_max = image.getWidth(null) / 2;
double translate_x_min = -image.getWidth(null) / 2;
double translate_y_max = image.getHeight(null) / 2;
double translate_y_min = -image.getHeight(null) / 2;
param.fitInRangeTranslateX(translate_x_min, translate_x_max);
param.fitInRangeTranslateY(translate_y_min, translate_y_max);
param.prescaler = (double) MAX_IMG_HEIGHT / (double) image.getHeight(null);

if (ImageZoomer.DEBUG)
System.out.println("Panel width: " + getWidth() + "\tHeight: " + getHeight());

// // the prescale, stretch_x and zoom transformation
AffineTransform at = param.getAffineTransFormParam(image,
new Dimension((int) getPreferredSize().getWidth(), MAX_IMG_HEIGHT));
if (ImageZoomer.DEBUG) {
System.out.println(param);
System.out.println("Transformation: " + at.toString());
}
g2D.drawImage(image, at, null);
g2D.dispose();
}
}

class PanningHandler extends MouseAdapter {
private int x;
private int y;

@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
param.reset();
zoomSlider.setValue(100);
horizontalScaleSlider.setValue(100);
canvas.repaint();
}
}

@Override
public void mouseDragged(MouseEvent e) {
// the size of the pan translations
// are defined by the current mouse location subtracted
// from the reference location
int deltaX = e.getX() - x;
int deltaY = e.getY() - y;

// make the reference point be the new mouse point.
param.translateX += deltaX / Math.max(0.00001, (param.scaleX * param.prescaler));
param.translateY += deltaY / Math.max(0.00001, (param.scaleY * param.prescaler));
x = e.getX();
y = e.getY();
canvas.repaint();
}

@Override
public void mousePressed(MouseEvent e) {
// capture the starting point
x = e.getX();
y = e.getY();
}
}

class ScaleHandler implements ChangeListener {
public void stateChanged(ChangeEvent e) {
JSlider slider = (JSlider) e.getSource();
zoomPercent = slider.getValue();

// make sure zoom never gets to actual 0, or else the objects will
// disappear and the matrix will be non-invertible.
param.scaleY = Math.max(0.00001, zoomPercent) / 100.0;
param.scaleX = param.scaleY * param.stretchX;
canvas.repaint();
}
}

class HorizontalScaleHandler implements ChangeListener {
public void stateChanged(ChangeEvent e) {
JSlider slider = (JSlider) e.getSource();
double horizontalScalePercent = slider.getValue();
// make sure zoom never gets to actual 0, or else the objects will
// disappear and the matrix will be non-invertible.
param.stretchX = Math.max(0.15, horizontalScalePercent / 100.0);
param.scaleY = Math.max(0.00001, zoomPercent) / 100.0;
param.scaleX = param.scaleY * param.stretchX;
canvas.repaint();
}
}
}[/CODE]
 

simmerl74

Mitglied
Hallo Blender3D , vielen Dank für deine Antwort.

Ich habe nun auf verschiedenen Rechnern mit unterscheidlichen Betriebssystemen und Java VMs nochmals getestet und siehe da unter 32bit (java-1.7.0-openjdk-1.7.0) funktioniert alles einwandfrei. Versuche ich den gleichen Code unter (java-11-openjdk-amd64) laufen zu lassen treten dann massive Probleme auf: "Pano2.jpg" wird gar nicht angezeigt und bei "Pano1.jpg" gibt es Probleme beim Zoomen.

Dass dir der Speicher zu wenig wir hängt wohl mit den Einstellungen der VM zusammen. Hier je nach verfügbarem physischen Speicher einfach mal mittels VW arguments etwas mehr Speicher zuweisen:

-Xms1g -Xmx2g

Habe jetzt auch auf dem 32bit Rechner festegestellt unter Java 7 läuft es unter Java 8 und Java 11 gibt es Fehlfunktionen.
Welche Java Runtime verwendest du?
 

Blender3D

Top Contributor
Dass dir der Speicher zu wenig wir hängt wohl mit den Einstellungen der VM zusammen. Hier je nach verfügbarem physischen Speicher einfach mal mittels VW arguments etwas mehr Speicher zuweisen:

-Xms1g -Xmx2g

Habe jetzt auch auf dem 32bit Rechner festegestellt unter Java 7 läuft es unter Java 8 und Java 11 gibt es Fehlfunktionen.
Welche Java Runtime verwendest du?
Es handelt sich wahrscheinlich um ein Problem der benutzten VM. Trotz genug Heap wirft es beim Laden OutOfMemory bei Pano2.jpg
Wahrscheinlich ist die 39485 Pixel Weite des Bildes das Problem. Pano1.jpg hat nur 15794 Pixel und benötigt insgesamt mehr Speicher als Pano2.jpg. Mit mehr Heapspeicher hätte ich genug Speicher für das Bild zur Verfügung es liegt meines Erachtens an der zu Großen Pixelzahl der Weite bei der jeweiligen benutzten VM.
Ich verwende
1627039794057.png
Ich hoffe der überarbeitete Code von mir hilft dir weiter.
 

simmerl74

Mitglied
Interessant ist ja dass dies bei Verwendung von java-1.7.0-openjdk ohne Probleme läuft sowohl das Zoomproblem bei Pano1 ist da verschwunden und auch das Pano2 wird angezeigt und lässt sich zoomen.

Denke das ist ein Java BUG
 

simmerl74

Mitglied
Vielen Dank. Es scheint von der VM abzuhängen ob es funktioniert oder nicht.
Ich habe mich dazu entschlossen das ganze umzubauen und mit Subimages zu arbeiten (was auch die Performance noch steigert)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11
A Java Print: Bilder werden zu groß ausgedruckt AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben