簡體   English   中英

使用Java中的AWT和組件進行繪圖

[英]Drawing with AWT and components in Java

我目前正在使用AWT在Java中進行游戲。 主類擴展了Frame,我一直在使用它通過.getGraphics()和.drawRect()繪制圖形。 這樣做一直很好,只不過當我在框架中添加標簽之類的組件時,它停止渲染圖形並僅顯示組件。

  • 使用getGraphics()進行繪制。 那不是正確的方法。
  • 嘗試在頂級容器(如JFrame)上繪畫

代替

  • 在JPanel或JComponent上繪畫(我更喜歡前者)
  • 重寫paintComponent(Graphics g)方法。 使用此方法進行所有繪畫,並使用隱式傳遞的Graphics上下文。 您無需實際調用 paintComponent因為它將為您隱式調用。

看到

編輯

  • 剛注意到您正在使用AWT。 您確實應該考慮升級到Swing。 否則,代替paintComponent ,你將要覆蓋paint ,如AWT組件不具有paintComponent方法。 但我強烈建議您使用Swing

示例(使用Swing)

public class SimplePaint {
    public SimplePaint() {
        JFrame frame = new JFrame();
        frame.add(new DrawPanel());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    class DrawPanel extends JPanel {
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(300, 300);
        }
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.fillRect(50, 50, 150, 150);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new SimplePaint();
            }
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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