Java 如何更改超类方法的参数?

Java 如何更改超类方法的参数?,java,Java,因此,我尝试将paint方法从Canvas类更改为接受数组作为参数之一。这就是我所尝试的: int[] array = createArray(10, 1, 10); JFrame frame = new JFrame("My Drawing"); Canvas canvas = new Draw(); canvas.setSize(600, 600); frame.add(canvas); frame.pack(); frame.set

因此,我尝试将paint方法从Canvas类更改为接受数组作为参数之一。这就是我所尝试的:

    int[] array = createArray(10, 1, 10);

    JFrame frame = new JFrame("My Drawing");
    Canvas canvas = new Draw();
    canvas.setSize(600, 600);
    frame.add(canvas);
    frame.pack();
    frame.setVisible(true);
    canvas.paint(canvas.getGraphics(), array);
这是绘画课:

public class Draw extends Canvas
{

/**Draws the graphs
 * 
 */

private static final long serialVersionUID = 1L;


public void paint(Graphics g, int[] array)
 {
    for(int x = 0; x<array.length; x++)
    {
        g.fillRect(x, 0, 10, array[x]);
    }
 }

}
公共类绘制扩展画布
{
/**绘制图形
* 
*/
私有静态最终长serialVersionUID=1L;
公共虚空绘制(图形g,int[]数组)
{
对于(int x=0;x当前,您的
new Draw()
被声明为
Canvas
对象。如果将声明更改为
Draw Canvas=new Draw();
您可以调用您的方法

编辑: 问题是,
paint(Graphics g)
是Swing调用的内部方法,当组件将由框架渲染时。您的
paint(Graphics g,int[]array)
方法不会更改渲染过程。您希望在
paint(Graphics g)之前提供创建图形的参数调用了
。下面是一个非常简单的示例:

    public class Draw extends Canvas {

    private static final long serialVersionUID = 1L;

    private int[] array;

    public Draw(int[] array) {
        this.array = array;
    }

    @Override
    public void paint(Graphics g) {
        for (int x = 0; x < array.length; x++) {
            g.fillRect(x, 0, 10, array[x]);
        }
    }
}
公共类绘制扩展画布{
私有静态最终长serialVersionUID=1L;
私有int[]数组;
公共绘图(int[]数组){
this.array=数组;
}
@凌驾
公共空间涂料(图g){
对于(int x=0;x

然后使用
Canvas draw=new draw(array)
创建图形。只要图形不必在Gui运行时显示不同的数组(例如,如果按下按钮创建了一个新数组,您希望显示它),此简单示例就可以工作.

你不能直接从一个超类对象调用子类方法我不确定你是否看到了我的最后一句话,但当我尝试在画布上绘制任何东西时,我无法在画布上绘制任何东西。我认为为了在画布上实际绘制任何东西,我需要使用画布类的绘制方法或其他方法。抱歉,我没有解释你想做什么,并且没有解释这是我的答案。