[英]Java Swing draw image after paintComponent called
我對如何擴展JPanel以使畫布樣式對象在Swing中工作感到有些困惑,如果要在創建新對象后創建新圖像或文本,該怎么辦? 因為我假設那是在paintComponent被調用的時候。
除了ControlAltDel (有關如何以編程方式重繪的信息,請參閱教程的第3步 )和Andrew Thompson的出色建議之外,這可能是一個非常簡單的示例,可以幫助您入門:
public class Main {
public static void main(final String[] args) throws InterruptedException {
final JFrame frame = new JFrame("Swing canvas");
frame.setBounds(100, 100, 640, 480);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
final CanvasPanel canvasPanel = new CanvasPanel();
frame.getContentPane().add(canvasPanel);
frame.setVisible(true);
final List<String> words = Arrays.asList("one", "ein", "une", "uno", "jeden", "een");
for (final String word : words) {
canvasPanel.addWord(word);
// Dirty way to simulate some heavy translation work...
Thread.sleep(246);
}
}
}
class CanvasPanel extends JPanel {
private final List<String> words = new ArrayList<>();
public void addWord(final String word) {
words.add(word);
repaint();
}
@Override
protected void paintComponent(final Graphics graphics) {
super.paintComponent(graphics);
for (int wordIndex = 0; wordIndex < words.size(); wordIndex++)
graphics.drawString(words.get(wordIndex), 42, 64 + 28 * wordIndex);
}
}
在此示例中,畫布面板本身調用repaint方法,但也可以從外部調用它。 祝您項目順利!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.