java - 油漆组件不会运行
问题描述
我对为什么 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();
不需要 repaint()。当框架可见时,Swing 将绘制所有组件。
阅读 Swing 基础知识和工作示例的Swing 教程以帮助您入门。
推荐阅读
- database - GraphQL 枚举到 DB 整数而不是字符串
- node.js - 如何在 html 中显示 mongoDB 集合?
- javascript - 未捕获的类型错误:无法使用“in”运算符在未定义中搜索“token”
- angular - 如何为graphql查询转义变量
- ruby-on-rails - 当 Rspec 需要在 Ruby on Rails 中打开点击功能时,Rspec 失败
- dotnetnuke-9 - 如何仅将 Dnn 文本编辑器创建为富编辑器?
- docker - kube-dns 无法解析域名
- ios - Swift / iOS:触摸标签栏项目时隐藏标签栏
- java - 使用拖放在同一目标中重新排序 WebElement
- python - 如何通过 Selenium 和 Python 根据 HTML 从选项中选择一个值