我正在一个有图形的项目中工作,到目前为止,我有两个不同的类,每个类都有图形。在这两个类中都调用了paint(Graphics g)
方法,但是当我执行它时,JFrames
都闪烁了。
我的问题是:正确的方法是在一个类中调用项目的所有图形,还是每个类需要新的线程?
提前谢谢。
public void paint(Graphics g)
{
repaint();
mapLimits();
moveEnemy();
g.drawImage(background, 0,0, null); // draw background
drawImage(g, myHero, heroXposition, heroYposition, "name"); // draw hero
repaint();
}
对于库存类,paint方法就像这样
public void paint(Graphics g)
{
g.drawImage(background, 0,0,null); //background
repaint();
}
并且在主类
中调用它们Hero hero = new Hero();
hero.setVisible(true);
Inventory inv = new Inventory();
inv.setVisible();
答案 0 :(得分:2)
答案与Thread
无关(或者说,抛出线程不能解决代码已经存在的问题)。这一切都归结为自定义绘画,并正确地做到了。
有关详细信息,请参阅Java教程的Performing Custom Painting课程。
一些一般提示是:
paint(Graphics)
。在你做的那一刻,你发现自定义渲染可能会更好地显示在JDialog
,JInternalFrame
(等)中,而不是你编写的任何内容。JComponent
或JPanel
中的一个。第一个用于完全自定义绘画,第二个用于将自定义绘画与其他组件相结合。在其中任何一个类中,覆盖paintComponent(Graphics)
而不是paint(Graphics)
。EachWordUpperCase
,方法&属性firstWordLowerCase
,常量ALL_UPPER_CASE
。如果除了你以外的任何人都会阅读代码,这一点尤为重要。其他程序员使用名称的大小来提供关于其性质/来源的提示。repaint()
内致电paint(Graphics)
。