gpt4 book ai didi

java - 非静态变量,不能从 main 方法中的静态上下文中引用

转载 作者:行者123 更新时间:2023-11-29 05:45:30 25 4
gpt4 key购买 nike

我在这条语句的主要方法中显示错误://不能从静态上下文中引用的非静态变量

frame.getContentPane().add(new PieChart()); 

我认为这就像加载内容 Pane 并向其中添加 PieChart 类一样简单。我今天花了几个小时,希望能在这个问题上得到帮助。我有 10 周的 Java 经验,直到现在才开始深入研究。任何意见是极大的赞赏。

Here is my PieChart program:


package iapiechart;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
import javax.swing.JFrame;

class IAPieChart{

double arcValue; // passes a value for the calculation of the arc.
Color marker; // holds value for color (expressed as an integer

public IAPieChart(double value, Color color){

this.arcValue = value;
this.marker = color;
}


public class PieChart extends JComponent {

IAPieChart[] pieValue = {new IAPieChart(5, Color.green),
new IAPieChart(33, Color.orange),
new IAPieChart(20, Color.blue),
new IAPieChart(15, Color.red)

};

public void paint(Graphics g) {

drawPie((Graphics2D) g, getBounds(), pieValue);

}

void drawPie(Graphics2D g, Rectangle area, IAPieChart[] pieValue){

double sum = 0.0D;
for (int i = 0; i < pieValue.length; i++) {

sum += pieValue[i].arcValue;
}

double endPoint = 0.0D;
int arcStart = 0;
for (int i = 0; i < pieValue.length; i++){

endPoint = (int) (endPoint * 360 / sum);
int radius = (int) (pieValue[i].arcValue * 360/ sum);
g.setColor(pieValue[i].marker);
g.fillArc(area.x, area.y, area.width, area.height, arcStart, radius);
radius += pieValue[i].arcValue;
}

}
}
public static void main(String[] args) {

JFrame frame = new JFrame();
frame.getContentPane().add(new PieChart()); // This is where the error occurs.
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

}
}

最佳答案

从静态方法 main 中,您试图实例化一个非静态的内部类 PieChart - 将其声明为静态的。

public static class PieChart extends JComponent { 

如果要使 PieChart 保持非静态,则需要 IAPieChart 实例来创建 PieChart 实例,并且您在 main 中没有 IAPieChart 的实例。

关于java - 非静态变量,不能从 main 方法中的静态上下文中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15982561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com