2011-11-08 175 views
1

我有一个从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); 
    } 
} 

现在我通过使用下面的代码在JScrollPane中加载此JPanel。

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

,但我无法看到在JScrollPane的任何图形(矩形和线),有什么我做错了什么建议?

+0

没有JScrollPane它工作吗? –

回答

3

你永远不会将你的JPanel直接添加到JScrollPane中,而是直接添加到它的视口中。因此,例如,不

jScrollPane2.add(jpnl); 

而是类似:

jScrollPane2.setViewportView(jpnl); 

jScrollPane2.getViewport().add(jpnl); 

或者,您可以添加的JPanel作为在滚动的构造函数的参数。

+1

挑剔(答案是正确的,当然,+1 :-) - 当有委托方法时,我宁愿你不要推荐调用某个包含组件的方法:从概念上讲,这是无需破解封装 – kleopatra