我目前用AWT用Java制作游戏。主类扩展了Frame,我一直用它来使用.getGraphics()和.drawRect()绘制图形。这一直很好,除了当我向框架添加标签等组件时,它停止渲染图形并仅显示组件。
答案 0 :(得分:2)
getGraphics()
进行绘画。这不是正确的方法。paintComponent(Graphics g)
方法。在此方法中执行所有绘制,使用隐式传递的Graphics上下文。您永远不必实际调用 paintComponent
,因为它会被隐式调用。paintComponent
,而不是paint
,因为AWT组件没有paintComponent
方法。但我强烈建议你使用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();
}
});
}
}