本帖最后由 cszddx 于 2011-08-03 14:54:50 编辑

解决方案 »

  1.   

    继承父类的时候,覆盖父类的paint方法,在paint中画线。
    特别记得要先调用super.paint(); 然后画线。
      

  2.   

    参照以下代码public class MainFrame extends JFrame {
    private void init() {
    setVisible(true);
    setPreferredSize(new Dimension(1000, 720));
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setTitle("task");
    getContentPane().setLayout(null);
    JPanel panel = new MyPanel();
    panel.setBounds(123, 260, 451, 163);
    getContentPane().add(panel);

    JLabel lblNewLabel = new JLabel("New label");
    panel.add(lblNewLabel); pack();
    }
    public class MyPanel extends JPanel{
    @Override
    public void paint(Graphics g){
    super.paint(g);
    g.setColor(Color.red);
    g.drawLine(this.getWidth()/2, 0, this.getWidth()/2, this.getHeight());
    }
    }
    public static void main(String[] args){
    JFrame f = new MainFrame();
    f.setVisible(true);
    }
    }
      

  3.   

    可以用JLayeredPane试试
    JComponent的setOpaque(false);可以设置透明
      

  4.   

    可能我没说清楚,我是以Composite做为载体来画线的,我是希望放在Composite中的控件,不要把线覆盖掉。
      

  5.   

    楼主用SWT?在Composite上addPaintListener,其中绘线不行吗?
      

  6.   

    我用的是swt,然后画的线就被label挡掉了..
    无限迷茫啊...
      

  7.   

    已经解决,使用GC的drawString方法,设置为透明就可以显示在线上面了。一滴汗啊,用RCP画报表..