Я пытаюсь обновить свой файл на основе данных, которые изменяются во время работы симулятора.Круговая диаграмма, не показывающая ожидаемый результат
Моя проблема заключается в том, что в piechart не отображаются данные правильным образом, и я не знаю, в чем проблема.
public void paintComponent(Graphics g) {
super.paintComponent(g);
int totalAmountOfCars = this.adhocCars + this.reservationCars + this.parkpassCars;
float percentageAdHoc = totalAmountOfCars <= 0 || this.adhocCars <= 0 ? 0 : adhocCars/totalAmountOfCars * 100;
float percentageParkPass = totalAmountOfCars <= 0 || this.parkpassCars <= 0 ? 0 :parkpassCars/totalAmountOfCars * 100;
float percentageReservation = totalAmountOfCars <= 0 || this.reservationCars <= 0 ? 0 :reservationCars/totalAmountOfCars * 100;
float adHocAngle = totalAmountOfCars <= 0 || this.adhocCars <= 0 ? 0 : 360/percentageAdHoc*100;
float parkPassAngle = totalAmountOfCars <= 0 || this.parkpassCars <= 0 ? 0 : 360/percentageParkPass*100;
float reservationAngle = totalAmountOfCars <= 0 || this.reservationCars <= 0 ? 0 : 360/percentageReservation*100;
Dimension prefSize = this.getPreferredSize();
g.setColor(Color.WHITE);
g.fillRect(prefSize.width/2, prefSize.height/2, 200, 200);
Здесь я вычислить углы для дуг ..
g.setColor(Color.RED);
g.fillArc(prefSize.width/2 + 10, prefSize.height/2 + 10, 180, 180, 0,(int)adHocAngle);
g.setColor(Color.BLUE);
g.fillArc(prefSize.width/2 + 10, prefSize.height/2 + 10, 180, 180, (int)adHocAngle, (int)adHocAngle+(int)parkPassAngle);
g.setColor(Color.ORANGE);
g.fillArc(prefSize.width/2 + 10, prefSize.height/2 + 10, 180, 180,(int)adHocAngle+(int)parkPassAngle, (int)reservationAngle);
Эта часть должна заполнить ее, а в некоторых случаях целые символы заполнена оранжевым и в других случаях его на 99% красного с крошечная линия синего цвета. Вместо 30%, 40%, 30%, например.
Это трудно для большинства из нас, чтобы догадаться, что может быть неправильным, так как мы не в состоянии проверить небольшие отдельные биты кода. Мы не хотим видеть целую большую программу, так как это подавит нас кодом, большая часть которого полностью не связана с вашей проблемой, но мы очень ценим это, когда плакат прилагает небольшие усилия для создания небольшой компилябельной и исполняемой демонстрации программы, [mcve] (https://stackoverflow.com/help/mcve). Пожалуйста, посмотрите на ссылку для получения более подробной информации о том, что мы просим вас опубликовать. –
Также это: '' Моя проблема в том, что в piechart не отображаются данные правильным образом ... "' - говорит нам мало пользы. Как * точно * ваша программа плохо себя ведет? Детали имеют значение. –
'360/percentAdHoc * 100;' '' '' 'выглядит очень подозрительно. Тригонометрические методы Java обычно работают в радианах. –