首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写paint()方法

重写paint()方法
EN

Stack Overflow用户
提问于 2015-12-02 06:47:54
回答 1查看 7.1K关注 0票数 0

我在这里有一个初学者的问题,我希望有一些Java经验的人可以帮助我。目前正在学习面向对象的入门课程,重点是Java。我的老师目前正在讨论awt和swing,特别是需要覆盖油漆方法,以便在调整窗口大小时重新绘制图形,等等。我喜欢尽可能多地进行外部阅读,我担心的是,我的教授给出的例子涉及到一些我已经读过的东西不是最佳实践。说到重点..。

我知道重写油漆方法是必要的,但我不知道最好的方法。我的教授的例子如下所示:

代码语言:javascript
复制
class Example extends JFrame {
  public void paint(Graphics g) {
    super.paint(g);
    g.drawString("Blah, blah");
  }

  public static void main(String[] args) {
    Example a = new Example();
    a.setDefaultCl...
    \\Etc...
  }
}

这让我感到困扰,因为将GUI的所有内容都包含在与我的主要方法相同的类中似乎是不对的。另外,我在这里读到了一个不同的线程,您不应该扩展JFrame,但是没有解释为什么。我的解决方案是创建一个类,处理gui并在构造函数中实例化JFrame。然而,除非我弄错了,否则这样做不会让我覆盖油漆方法。我觉得必须扩展JFrame以允许我重写画图,但我再次读到这是错误的。

任何帮助都会受到衷心的感谢,我知道我可以把我的代码建模在他所拥有的基础上,但我真的很想了解这一点,并知道处理它的最佳方法。

EN

回答 1

Stack Overflow用户

发布于 2015-12-02 06:50:33

我知道有必要重写油漆方法

不,不应该重写paint()方法。

应重写paintComponent()方法的JPanel,然后将面板添加到框架中。

有关更多信息和工作示例,请参阅有关定制绘画的Swing教程中的部分。

本教程还将向您展示如何更好地构造代码,以便在事件调度线程(EDT)上创建GUI。本教程还有一个关于Concurrency的部分,它将解释为什么这很重要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34036540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档