2012-03-30 3 views
0

им пытается соединить два JComponents с простой линией, вот как я пытался сделать это:Draw линия - линия не видна

первого объект заполняется прямоугольник, 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 х 14 , то я добавить arcObject на JPanel, вызовите перекрашивать, и перекрываться paintComponent в классе ArcObject называется.

это код

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

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

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

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

ответ

0

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

0

Установите точку останова на g.drawLine(), а затем запустите код в своем отладчике. Шаг в drawLine(), чтобы убедиться, что а) метод фактически вызван и б) координаты - это то, что вы ожидаете.