我完全不明白为什么Paint Component没有在这个代码中运行:
public class GraphicsWindow extends JPanel {
public static final int Width = 1000, Height = 800;
GraphicsWindow(){
setPreferredSize(new Dimension(Width, Height));
}
public void PaintComponent(Graphics g){
super.paintComponents(g);
g.setColor(Color.red);
for(int i = 0; i < Width/10; i++){
g.drawLine(i * 10, 0, i*10, Height);
}
System.out.println("paint ran");
}
}
主要功能:
public static void main(String[] args) {
GraphicsWindow Graphics = new GraphicsWindow();
Graphics.setBackground(Color.green);
Graphics.setSize(1000, 800);
JFrame Window = new JFrame("Snake");
Window.add(Graphics);
Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Window.setBounds(650, 200, 1200, 1000);
Window.setVisible(true);
Graphics.repaint();
}
我已经在论坛上看了大约一个小时,一页又一页,却一无所获。我可以判断是油漆组件没有运行,因为控制台从来没有得到"油漆运行"的打印输出。如果这是一个非常愚蠢的错误,对于可能混乱的代码,我很抱歉,我对java有点陌生。
Java名称区分大小写:
public void PaintComponent(Graphics g){
应该是:
public void paintComponent(Graphics g){
当你覆盖一个你应该使用的方法时:
@Override
public void PaintComponent(Graphics g){
当您没有重写现有的方法时,编译器会给您一条错误消息。
变量名称不应以大写字母开头。通过查看示例来学习Java惯例,并遵循这些示例。
Graphics.repaint();
不需要重新绘制((。当框架可见时,Swing将绘制所有组件。
阅读Swing基础知识的Swing教程和工作示例,开始学习。