JPanel не отображает графику

У меня есть класс Java, который расширяется от JPanel. Основная цель расширения этого класса от JPanel заключается в том, что я хочу нарисовать некоторые графические фигуры внутри этой JPanel. Код этого класса выглядит следующим образом:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
public class ObjectViewer extends JPanel {
    public void paintComponent(Graphics g) {
        //just for testing
        g.drawRect(0, 0, 100, 10);

        g.drawLine(150, 150, 250, 150);
    }
}

Теперь я загружаю эту JPanel в JScrollPane, используя следующий код.

JPanel jpnl = new ObjectViewer();
jScrollPane2.add(jpnl);//Note: I drag and drop this JScrollPanel at desired location from NetBeans gui.

Но я не могу видеть графику (прямоугольную и линейную) в этом JScrollPane, какие-либо предложения о том, что я делаю неправильно?


person Jame    schedule 08.11.2011    source источник
comment
Это работает без JScrollPane?   -  person Maxwell Dergosits    schedule 08.11.2011


Ответы (1)


Вы никогда не добавляете свою JPanel непосредственно в JScrollPane, а скорее в ее область просмотра. Так, например, не

jScrollPane2.add(jpnl);

а скорее что-то вроде:

jScrollPane2.setViewportView(jpnl);

or

jScrollPane2.getViewport().add(jpnl);

в качестве альтернативы вы можете добавить JPanel в качестве параметра в конструкторе панели прокрутки.

person Hovercraft Full Of Eels    schedule 08.11.2011
comment
придирки (ответ правильный, конечно, +1 :-) - я бы предпочел, чтобы вы не рекомендовали вызывать метод для содержащегося компонента, когда есть метод делегата: концептуально это нарушает инкапсуляцию без необходимости - person kleopatra; 08.11.2011