Hi!
Ich habe da ein kleines Problem mit dem Zeichnen von Images auf ein JPanel.
Das Bild ist eine PNG Datei mit transparentem Hintergrund. Wie man unten sehen kann, wird hinter den grünen Pfeil ein Stück eines Textfeldes gezeichnet (dieses steht korrekt gezeichnet auf dem Panel nebendran).
Woran kann das liegen?
Ich zeichne noch einige Grafiken auf anderen Panels im Frame. Diese werden ohne Probleme gezeichnet.
Hier das Panel auf dem der Pfeil gezeichnet wird:
Hier das Panel, auf den das Pfeilpanel kommt und welche dann auf den Frame gesetzt wird:
Danke schonmal!
LG
Ich habe da ein kleines Problem mit dem Zeichnen von Images auf ein JPanel.
Das Bild ist eine PNG Datei mit transparentem Hintergrund. Wie man unten sehen kann, wird hinter den grünen Pfeil ein Stück eines Textfeldes gezeichnet (dieses steht korrekt gezeichnet auf dem Panel nebendran).
Woran kann das liegen?
Ich zeichne noch einige Grafiken auf anderen Panels im Frame. Diese werden ohne Probleme gezeichnet.
Hier das Panel auf dem der Pfeil gezeichnet wird:
Code:
public class ArrowPanel extends JPanel {
private ImageSymbol is; //ImageSymbol ist für das Laden und Resizen der Grafik zuständig
public ArrowPanel() {
String filename = "images/arrow_left.png";
Dimension d = new Dimension(30, 30);
this.setPreferredSize(d);
is = new ImageSymbol(0, 0, 30, 30, filename);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponents(g);
this.prepareImage(is.getImage(), this);
g.drawImage(is.getImage(), is.getX(), is.getY(), this);
}
Hier das Panel, auf den das Pfeilpanel kommt und welche dann auf den Frame gesetzt wird:
Code:
public class LinkPanel extends JPanel {
private JLabel label = new JLabel("Link zum Zyklus: ");
private JTextField linkField;
private JButton button = new JButton("in Zwischenablage");
public LinkPanel(int userID, int cycleID) {
String text = "http://www.mein-zykluskalender.de/index.php?page=show&userID="
+ userID + "&cycleID=" + cycleID;
linkField = new JTextField(45);
linkField.setText(text);
ArrowPanel left = new ArrowPanel(0);
ArrowPanel right = new ArrowPanel(1);
this.setLayout(new FlowLayout());
this.add(left);
this.add(label);
this.add(textField);
this.add(button);
this.add(right);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Clipboard clipboard = textField.getToolkit()
.getSystemClipboard();
StringSelection data = new StringSelection(linkField.getText());
clipboard.setContents(data, data);
}
});
}
}
Danke schonmal!
LG