gpt4 book ai didi

java - 重写paint()方法

转载 作者:行者123 更新时间:2023-12-01 21:58:36 24 4
gpt4 key购买 nike

我这里有一个初学者问题,我希望有一些 Java 经验的人可以帮助我。目前正在学习以 Java 为重点的 OOP 入门类(class)。我的老师目前正在讨论 awt 和 swing,特别是需要重写绘制方法,以便在调整窗口大小时重新绘制图形等。我喜欢尽可能多地进行外部阅读,我担心的是我的例子教授给出的涉及我读过的内容并不是最佳实践。进入正题...

我知道有必要重写paint方法,但我不知道最好的方法。我教授的例子都类似于以下内容:

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 以允许我覆盖绘制,但我再次了解到这是错误的做法。

任何帮助将不胜感激,我知道我可以根据他的代码建模我的代码,但我真的很想理解这一点并知道处理它的最佳方法。

最佳答案

I understand that it's necessary to override the paint method

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

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

阅读 Swing 教程中关于 Custom Painting 的部分了解更多信息和工作示例。

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

关于java - 重写paint()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34036540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com