LINUX.ORG.RU

Image на JPanel

 ,


0

1

Споткнулся на самом ровном месте. На форме с BorderedLayout располагаются две JPanel. Одна из них справа (BorderLayout.EAST), вторая добавлена далее и занимает бОльшую часть фрейма.

|--------------------------|
|                  |       |
|  *               |       |  * - мелкие изображения
|                  |       |       
|        *         |   и   |    
|  это JPanel      |  это  |
|                  | JPanel|
|                  |       |
|    *             |       |
|                  |       |
|--------------------------|
Нужно отрисовывать на левой панели различные изображения. Ну, естественно, под изображение определен свой класс, унаследованный от JComponent с переопределенным методом paint. Суть - если добавлять инстанс этого моего класса на саму JPanel, она никак не хочет отрисовываться, если кидать его на contentPane - всё отлично работает. Т.е.
// в конструкторе формы
public MainForm(GameDataModel model) {
 ...
 // циферки, как нетрудно догадаться, - координаты. Ну, не суть.
 // MyDamnedImage - мой класс с переопределенным public void paint(Graphics g)
 add(new MyDamnedImage(10, 10)); // на contentPane - пожалуйста
 leftPanel.add(new MyDamnedImage(100, 100)); // - ничего...
 ...
}
Вопрос - почему? Я чего-то в упор не вижу в SWING?

★★★★

Последнее исправление: Insomnium (всего исправлений: 1)

Ответ на: комментарий от Insomnium

А как именно «не хочет»? Добавь background для твоего компонента. Он виден?
И попробуй еще validate/invalidate/repaint для твоего компонента

Rubbiroid
()
Ответ на: комментарий от Insomnium

Тогда что-то с OnPaint. Могу из дома скинуть свой вариант, авось заработает

Rubbiroid
()
public class BufferedImagePanel extends JPanel {
	private BufferedImage image;
	...
	public void paintComponent( Graphics g )
	{
		super.paintComponent( g );
		Graphics2D g2d = (Graphics2D) g;
		Dimension dim = getSize();
		g2d.drawImage( getImage(), 0, 0, dim.width, dim.height, this );
	}
}
Rubbiroid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.