Рисовать линию - линия не видна - PullRequest
0 голосов
/ 30 марта 2012

я пытаюсь соединить два JComponents простой линией. Вот как я пытался это сделать:

1-й объект заполнен прямоугольником, 48x48, и затем я нарисовал круг (.png) в этом прямоугольнике.Я поместил его в JPanel, и X равен 106, а Y равен 166

2-й объект заполнен прямоугольником 28x57, и его просто прямоугольник. Я помещаю этот прямоугольник в JPanel, а его X равен 378 иего Y равно 180

Я уже создал объект, который представляет линию между этими двумя объектами, и я установил его размер следующим образом

arcObject.setSize(Math.abs(arcObject.o2.x - arcObject.o1.x), Math.abs(arcObject.o2.y - arcObject.o1.y));

Я напечатал ширину и высоту, иего 272 x 14, затем я добавляю этот arcObject в JPanel, вызываю repaint, и вызывается переопределенный paintComponent в классе ArcObject.

это код

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawLine(o1.x, o1.y, o2.x, o2.y);
}

, где o1 представляет первыйобъект, а o2 представляет второй объект (я описал эти объекты в начале этого поста)

Однако ни одна строка не видна после вызова paintComponent (), когда я устанавливаю arcObject измеренияв некоторых больших постоянных числах, таких как 600x600, тогда это видно ...

Итак, не могли бы вы сказать мне, что я делаю не так?: - / (paintComponent вызывается наверняка, он просто не рисует ничего или что-либо видимое)

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Установите точку останова на g.drawLine(), а затем запустите код в своем отладчике. Войдите в drawLine(), чтобы убедиться, что a) метод действительно вызван и b) координаты соответствуют вашим ожиданиям.

0 голосов
/ 30 марта 2012

Вам также необходимо установить местоположение вашего компонента arcLine, и, учитывая способ обработки, линия действительно должна перейти от arcLine (0,0) к arcLine (ширина, высота)

...