Мы не можем вполне понять, как можно сделать этот PieChart появиться:Как мы можем нарисовать этот класс piechart?
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;
}
}
и класс простирается от «точки зрения»
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();
}
}
и, наконец, класс, который вызывает все мнения (только применимый код показан)
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);
}
}
Я думаю, что проблема является метод краски(). Мы не можем назвать это нигде, но я уверен, что мы должны делать это по-другому, потому что это панель вместо кадра. Кто-нибудь знает, как мы можем это исправить?
Я знаю, вы используете Качели, однако JavaFX предоставляет определенный диаграмм, например a [PieChart] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/chart/PieChart.html). Просто хотел упомянуть об этом. – pzaenger
@pzaenger отличная помощь;) –
Спасибо за подсказку, теперь мы получили piechart, идущий с javaFX :) –