Hallo!
hab jetzt schon länger in Foren, tutorials, oracle usw gesucht, aber leider zu meinem Problem keine wirkliche Lösung gefunden.
Es geht grundsätzlich darum, dass ich ein Panel habe, dass sich aus 2 weiteren Panels zusammen setzt (alles Swing-Komponenten). Im oberen Panel werden meine Buttons dargestellt und im unteren soll ein Bild angezeigt werden. (soll ein einfaches Bildbearbeitungsprogramm werden)
Die App soll dann aus diesem Panel bestehen und wenn ein Bild geöffnet wird, die Methode initImg(img) aufgerufen werden.
Das Problem ist nun jedoch das, dass mein Bild einfach nicht gemalen wird.
Der Quellcode des Jpanels ist
hab jetzt schon länger in Foren, tutorials, oracle usw gesucht, aber leider zu meinem Problem keine wirkliche Lösung gefunden.
Es geht grundsätzlich darum, dass ich ein Panel habe, dass sich aus 2 weiteren Panels zusammen setzt (alles Swing-Komponenten). Im oberen Panel werden meine Buttons dargestellt und im unteren soll ein Bild angezeigt werden. (soll ein einfaches Bildbearbeitungsprogramm werden)
Die App soll dann aus diesem Panel bestehen und wenn ein Bild geöffnet wird, die Methode initImg(img) aufgerufen werden.
Das Problem ist nun jedoch das, dass mein Bild einfach nicht gemalen wird.
Der Quellcode des Jpanels ist
Java:
public class ImageEditingPanel extends javax.swing.JPanel {
private boolean pictureLoaded;
private float displayedHeight;
private float displayedWidth;
private int horCenter;
private int vertCenter;
private float imgWidth;
private float imgHeight;
private Image img;
private boolean crop;
private Rectangle rect;
private Image originalImg;
private float[] displayedSizes = new float[2];
private DisplayImage displayImg;
private ObserveImageChanges changeObserver;
private ArrayList<Image> undo;
private ArrayList<Image> redo;
private boolean init;
public ImageEditingPanel() {
initComponents();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (!init) {
initComponents();
init = true;
}
if (pictureLoaded) {
horCenter = editingPanel.getWidth() / 2 - (int) displayedWidth / 2;
vertCenter = editingPanel.getHeight() / 2 - (int) displayedHeight / 2;
g.drawImage(img, horCenter, vertCenter, (int) displayedWidth, (int) displayedHeight, this);
}
if (crop) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.red);
g2.setStroke(new BasicStroke(5));
g2.draw(rect);
CropImageShape cropImgShape = new CropImageShape(this);
this.addMouseListener(cropImgShape);
this.addMouseMotionListener(cropImgShape);
}
}
public void initImage(Image img) {
this.originalImg = img;
this.img = originalImg;
imgWidth = img.getWidth(this);
imgHeight = img.getHeight(this);
displayImg = new DisplayImage(img, editingPanel);
displayedSizes = displayImg.resize2WindowHeight();
displayedWidth = displayedSizes[0];
displayedHeight = displayedSizes[1];
changeObserver = new ObserveImageChanges(img);
undo = changeObserver.getUndo();
redo = changeObserver.getRedo();
pictureLoaded = true;
redrawImg(img);
}
public Image resetChanges() {
return originalImg;
}
public void redrawImg(Image img) {
changeObserver.observeImageChanges(img);
this.img = img;
this.repaint();
}