Java从不同的类调用绘画方法?
我有一个扩展JFrame并创建窗口的类,它需要调用另一个类中的paint方法。我知道,如果它们在同一个类中,setVisibletrue将调用paint方法,但由于它们在不同的类中,所以它不会。我已经创建了Die类的对象,即one paint,但是我不知道如何使用它们来调用paint方法 这是创建窗口的类:Java从不同的类调用绘画方法?,java,swing,class,paint,repaint,Java,Swing,Class,Paint,Repaint,我有一个扩展JFrame并创建窗口的类,它需要调用另一个类中的paint方法。我知道,如果它们在同一个类中,setVisibletrue将调用paint方法,但由于它们在不同的类中,所以它不会。我已经创建了Die类的对象,即one paint,但是我不知道如何使用它们来调用paint方法 这是创建窗口的类: public class Game extends Frame { public void window() { setTitle("Roll");
public class Game extends Frame
{
public void window()
{
setTitle("Roll"); // Title of the window
setLocation(100, 100); // Location of the window
setSize(900, 600); // Size of the window
setBackground(Color.lightGray); // Color of the window
setVisible(true); // Make it appear and call paint
}
对于另一个名为Die的类中的paint方法,我使用了:
public void paint(Graphics pane)
如果我理解你的问题,你可以通过如下方式将Die实例传递给游戏构造函数
public class Game extends Frame {
private Die die;
public Game(Die die) {
this.die = die;
}
public void window() {
setTitle("Roll"); // Title of the window
setLocation(100, 100); // Location of the window
setSize(900, 600); // Size of the window
setBackground(Color.lightGray); // Color of the window
setVisible(true); // Make it appear and call paint
die.setVisible(true); // The same
}
}
然后,无论在哪里调用新游戏,都要添加Die实例参数。这是在Java和其他OOP语言中实现a的一种相当常见的方法。一般回答:您要么需要一个引用,通过调用构造函数Die Die=new Die,然后调用绘制方法Die.paint,在游戏类中死亡;要么在Die类中,将绘制方法设为静态,然后将其称为Die.paint。@nem已经尝试过了第一个和第二个不起作用,因为我必须返回值?paint方法具有void返回类型,因此在这两种情况下都不需要返回任何内容。我不确定我是否理解这一点。游戏类有一个骰子。我的想法是在游戏类中多次调用Die类,该类使用多种方法创建一个Die来创建一个Die。还应注意,在Die类中的paint方法之前有一个setup方法。@John Yes。这就建立了一种has-a关系。如果你已经有了,那么你的问题就没有意义了。如果你需要多次调用它,那很好,你已经有了一个。当我尝试创建一个新游戏时,它告诉我构造函数游戏是未定义的。当我有了新的GameDie,它告诉我Die不能解析为变量。但是我仍然不明白我在骰子类中需要一个新游戏吗?通过骰子实例。新游戏新骰子或已初始化的骰子实例。。。新游戏的名字被初始化了哦,我明白了。但是现在我在main方法中调用什么呢?当我使用game myGameTable=newgame时,它告诉我构造函数game是未定义的;myGameTable.window;