java-将数组传递给绘画组件类?

我还有另一个初学者的问题,希望有人可以提供帮助.

 

我试图将数组从一个类传递到另一个类,以便使用它生成条形图.我知道我可以将数组作为参数传递,但是我遇到了一些错误,并且基本上有点迷路了.
图表类的基本代码如下.假设我要从“ AnotherClass”传递“ anArray”,谁能确切地告诉我应该如何传递它?

我尝试将其作为JBChart&的参数传递chartComponent但我想我需要将它放在paintComponent中吗?因为它已经有“ Graphics g”作为参数,所以我很困惑.无论如何,这两个中的任何一个都会出现nullPointer错误(尽管我知道我也可能在做其他错误).

这是图表类的基本代码.非常感谢任何想法:

 

public class JBChart extends JFrame {

    public JBChart()    {}

    public void buildChart()
    {   
        ChartComponent component = new ChartComponent();
        chartFrame.add(component);                           
        chartFrame.setVisible(true);
    }
}
public class ChartComponent extends JComponent {
    public ChartComponent() {}

    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
    }

-编辑-

这是堆栈跟踪之一的前几行(我希望足够了吗?):-

 

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at ChartComponent.<init>(ChartComponent.java:43) at JBChart.<init>(JBChart.java:32) 
at JavaBallGUI.displayBarChart(JavaBallGUI.java:273) 
at JavaBallGUI.actionPerformed(JavaBallGUI.java:310) 


它指向的行是:

 

for (int i = 0; i < teamObjects.length; i++) 
{ 
    if (teamObjects[i] != null) 
    { 
    teamName = teamObjects[i].getTeamName(); 
    System.out.println(teamName); 
    } 
} 

最佳答案

您可能应该将其传递给构造函数:

 

 

public class ChartComponent extends JComponent {
    private final int[] values; // For example

    public ChartComponent(int[] values) {
        this.values = values;
    }

    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
    }
}

请注意,这仍然允许任何一个类随后更改数组中的值,因为它们都引用了相同的可变对象.有多种解决方法,具体取决于您要执行的操作.然后,您将使用:

 

ChartComponent component = new ChartComponent(array);

另外,您总是可以在ChartComponent上创建setter方法,并在适当的时间调用它们.您将无法更改paintComponent的签名并仍然获得所需的行为,因此您需要在调用该方法之前提供数据.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值