我在这里有一个初学者的问题,我希望有一些Java经验的人可以帮助我。目前正在学习面向对象的入门课程,重点是Java。我的老师目前正在讨论awt和swing,特别是需要覆盖油漆方法,以便在调整窗口大小时重新绘制图形,等等。我喜欢尽可能多地进行外部阅读,我担心的是,我的教授给出的例子涉及到一些我已经读过的东西不是最佳实践。说到重点..。
我知道重写油漆方法是必要的,但我不知道最好的方法。我的教授的例子如下所示:
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以允许我重写画图,但我再次读到这是错误的。
任何帮助都会受到衷心的感谢,我知道我可以把我的代码建模在他所拥有的基础上,但我真的很想了解这一点,并知道处理它的最佳方法。
发布于 2015-12-02 06:50:33
我知道有必要重写油漆方法
不,不应该重写paint()方法。
应重写paintComponent()方法的JPanel,然后将面板添加到框架中。
有关更多信息和工作示例,请参阅有关定制绘画的Swing教程中的部分。
本教程还将向您展示如何更好地构造代码,以便在事件调度线程(EDT)上创建GUI。本教程还有一个关于Concurrency的部分,它将解释为什么这很重要。
https://stackoverflow.com/questions/34036540
复制相似问题