Разделение контроля за колебанием на равные части - PullRequest
0 голосов
/ 12 апреля 2009

Я знаю, что это глупый вопрос. Простите меня как n00b в CS

У меня есть новый компонент колебания, который наследуется от JComponent. Я пытаюсь нарисовать линии на его поверхности, чтобы показать, что линии разделяют элемент управления на равные части. Код выглядит как

int spc;
spc = (int) Math.round((this.ZBar.getWidth() / this.ZBar.getModel().getModelSize()));

        for (int i = 0; i <= this.ZBar.getModel().getModelSize(); i++) {
            g.drawLine(i * spcing, 0, i *, this.ZBar.getHeight());

        }
.

this.ZBar.getModel () getModelSize (); выдает количество частей, на которые можно разделить. Тем не менее, в некоторых случаях остается больше свободного места на самом правом конце моего компонента. Я предполагаю, что это соответствует преобразованию типов, выполненному Math.round. Как я могу решить это ??

Ответы [ 3 ]

1 голос
/ 12 апреля 2009

Это потому, что это деление является делением типа int. Например:

5 / 2 == 2

Math.round здесь ничего не делает. Он уже округляется (как вместо Math.floor).

Чтобы получить желаемый эффект, перед делением приведите int к двойному:

(double)5 / 2 == 2.5

Или в вашем конкретном случае:

spc = (int) Math.round(((double)this.ZBar.getWidth() / this.ZBar.getModel().getModelSize()));
0 голосов
/ 13 апреля 2009

Большое спасибо за ответ. Решил это.

Я сделал все эти целые беспорядки, чтобы удвоить. Затем использовал пакет Java2D для обработки двойников.

Создание поддержки класса Line2D с использованием двойных параметров.

0 голосов
/ 12 апреля 2009

Код, который вы разместили, не будет компилироваться из-за синтаксических ошибок, но я не вижу непосредственных проблем с вашим подходом Вы сказали, что проблема проявляется периодически. Это говорит о том, что проблема может заключаться в том, как Swing выполняет обновление и как вы справляетесь с этим в своем коде. Попробуйте почитать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...