Надеюсь, вы можете помочь мне в решении проблемы в моей drawString.drawString в BufferedImage исчезает
Я немного рисую в классе Factory и возвращаю BufferedImage с String на нем.
public class Factory {
public BufferedImage create() {
TempPanel tempPanel = new TempPanel(new Dimension(100, 100));
return tempPanel.createImage();
}
private class TempPanel extends JPanel {
public TempPanel(Dimension d) {
this.setVisible(true);
this.setSize(d);
}
public BufferedImage createImage() {
BufferedImage bi = new BufferedImage(this.getSize().getWidth(), this.getSize().getHeight(), BufferedImage.TRANSLUCENT);
this.paintComponent(bi.createGraphics());
return bi;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
// General setup
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// Transparent Background
g2.setComposite(AlphaComposite.Clear);
g2.fillRect(0, 0, graphicalObject.width, graphicalObject.height);
g2.setComposite(AlphaComposite.Src);
// Different settings for a certain graphical object
g2.setFont(new Font("TimesRoman", Font.PLAIN, 12);
// Actual drawing
g2.drawString("Test", 0, 0);
}
}
}
А потом у меня тоже есть JPanel, в котором это изображение должно быть отрисованы:
public class Label extends JPanel {
// ...
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Factory factory = new Factory();
BufferedImage img = factory.create();
g2.drawImage(img, 0, 0, null);
}
}
Проблема IST, что текст появляется только тогда, когда я минимизировать и восстановить окно, но как только я начните перемещать мышь внутри окна, текст снова исчезнет. Когда я вызываю drawRect() вместо drawString(), все работает нормально ?!
Может кто-нибудь сказать мне, почему?
Спасибо!
1 Убедитесь, что вы избавляетесь от любого 'Graphics' контекст, который вы делаете. 2. Почему вы используете «JPanel» и метод 'paintComponent' для отображения содержимого на« BufferedImage »? «JPanel» может делать выбор, когда он должен или не должен рисовать, основываясь на том, что он не отображается? – MadProgrammer
'' Test "' не имеет нисходящих; см. это возможное [дубликат] (http://stackoverflow.com/q/2658554/230513). – trashgod