Hallo,
ich arbeite gerade an einer Swing-Anwendung für Touchscreens. Hierfür habe ich unter anderem einen JButton erweitert, webei ich die paintComponent Methode überschreibe:
Falls die Image-Variable nicht null ist, soll das Image auf die gesammte Button-Oberfläche gezeichnet werden. Nun habe ich auf dem ContentPane des ersten JFrames, das angezeigt wird mehrere solcher Buttons hinzugefügt und absolut positioniert und es zeigt sich das merkwürdige Verhalten, dass die Images nicht immer überall sofort gezeichnet werden -> bei manchen Buttons sind sie erst sichtbar, wenn ich mit dem Mauszeiger über den Button fahre, also die Anzeige der Componente refreshed wird. Ich habe nun schon allerhand ausprobiert, aber konnte den Bug bisher nicht beheben. Merkwürdiger weise scheint das Problem auch irgendwie mit der absoluten Position der Buttons auf dem Frame zu tun zu haben. Umso weiter rechts der Button, desto eher wird das Bild anfangs nicht gezeichnet. Auch ein updateUI() des ContentPains verändert nichts.
Hat jemand vielleicht einen Tip, woran das liegen kann?
liebe Grüße, Soahc
ich arbeite gerade an einer Swing-Anwendung für Touchscreens. Hierfür habe ich unter anderem einen JButton erweitert, webei ich die paintComponent Methode überschreibe:
Java:
private Image img;
private String caption;
private Font font;
...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if (img!=null){
g2.drawImage(img, 0, 0, getWidth(), getHeight(), null);
}else{
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, getWidth(), getHeight());
}
g2.setFont(font);
int captionwidth = g2.getFontMetrics().stringWidth(caption);
g2.setColor(Color.BLACK);
g2.drawString(caption, getWidth()/2-(captionwidth/2), getHeight()-7);
}
Falls die Image-Variable nicht null ist, soll das Image auf die gesammte Button-Oberfläche gezeichnet werden. Nun habe ich auf dem ContentPane des ersten JFrames, das angezeigt wird mehrere solcher Buttons hinzugefügt und absolut positioniert und es zeigt sich das merkwürdige Verhalten, dass die Images nicht immer überall sofort gezeichnet werden -> bei manchen Buttons sind sie erst sichtbar, wenn ich mit dem Mauszeiger über den Button fahre, also die Anzeige der Componente refreshed wird. Ich habe nun schon allerhand ausprobiert, aber konnte den Bug bisher nicht beheben. Merkwürdiger weise scheint das Problem auch irgendwie mit der absoluten Position der Buttons auf dem Frame zu tun zu haben. Umso weiter rechts der Button, desto eher wird das Bild anfangs nicht gezeichnet. Auch ein updateUI() des ContentPains verändert nichts.
Hat jemand vielleicht einen Tip, woran das liegen kann?
liebe Grüße, Soahc