我有一个扩展自JPanel的java类。从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);
}
}
现在我正在JScrollPane中加载这个JPanel,通过使用下面的代码。
JPanel jpnl = new ObjectViewer();
jScrollPane2.add(jpnl);//Note: I drag and drop this JScrollPanel at desired location from NetBeans gui.
但我无法看到任何图形(矩形和线)在JScrollPane,我做错了什么建议?
永远不要将JPanel直接添加到JScrollPane中,而是添加到它的viewport中。例如,not
jScrollPane2.add(jpnl);
而不是像
jScrollPane2.setViewportView(jpnl);
或
jScrollPane2.getViewport().add(jpnl);
或者,可以将JPanel作为参数添加到滚动窗格的构造函数中。