簡體   English   中英

在paintComponent調用之后,Java Swing繪制圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM