gpt4 book ai didi

java - 我们如何绘制这个饼图类?

转载 作者:行者123 更新时间:2023-12-01 08:57:37 26 4
gpt4 key购买 nike

我们不太清楚如何让这个饼图出现:

import java.awt.*;
import java.awt.Graphics2D;
import java.awt.Graphics;
import javax.swing.*;


public class PieChart extends View {

public PieChart (Model model){
super(model);
MyComponent piechart = new MyComponent();
this.add(piechart);
}
public void updateView(){
repaint();
}
}

class MyComponent extends JComponent {
Slice[] slices = {
new Slice(5, Color.black), new Slice(33, Color.green), new Slice(20, Color.yellow), new Slice(15, Color.red)
};

MyComponent() {
setVisible(true);
}

public void paint(Graphics g) {
drawPie((Graphics2D) g, getBounds(), slices);
}

void drawPie(Graphics2D g, Rectangle area, Slice[] slices) {
double total = 0.0D;

for (int i = 0; i < slices.length; i++) {
total += slices[1].value;
}
double curValue = 0.0D;
int startAngle = 0;
for (int i = 0; i < slices.length; i++) {
startAngle = (int) (curValue * 360 / total);
int arcAngle = (int) (slices[i].value * 360 / total);
g.setColor(slices[i].color);
g.fillArc(area.x, area.y, area.width, area.height, startAngle, arcAngle);
curValue += slices[i].value;
}
}
}

class Slice {
double value;
Color color;
public Slice(double value, Color color) {
this.value = value;
this.color = color;
}
}

以及它从“view”扩展的类

import javax.swing.*;


@SuppressWarnings("serial")
public class View extends JPanel {
public Model model;

public View(Model model) {
this.model=model;
model.addView(this);
}

public void setModel(Model model) {
this.model=model;
}

public Model getModel() {
return model;
}

public void updateView() {
repaint();
}
}

最后是调用所有 View 的类(仅显示适用的代码)

public class Simulator {

....
private View pieChart;

public Simulator(int floors, int rows, int places) {
//initialiseert Model
floornumber = floors;
rownumber = rows;
placenumber = places;

model=new Model(floornumber,rownumber,placenumber);

screen=new JFrame("Parkere simulatie");
screen.setTitle("Parkeer-control Screen");
screen.setSize(1600, 1000);
screen.setResizable(false);
screen.setLayout(null);
........

pieChart = new PieChart(model);
screen.getContentPane().add(pieChart);
pieChart.setBounds(840, 300, 300, 300);
}
}

我认为问题出在paint()方法上。我们不能从其他地方调用它,但我很确定我们应该以不同的方式调用它,因为它是一个面板而不是一个框架。有谁知道我们如何解决这个问题?

最佳答案

您没有在屏幕上显示“屏幕”。 (例如setVisible)——它会根据需要自动调用子项的paint

再次:使框架可见, children 将被框架绘制

关于java - 我们如何绘制这个饼图类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41937664/

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