无法在图像上绘制

时间:2013-11-11 16:02:23

标签: java swing jpanel jscrollpane jlabel

我真正需要做的是...... 画在图像上(通常是大的)。我需要滚动图像来绘制它。 为此,我将图像(JLabel)添加到Jpanel中,并将Jpanel添加到JScrollPane中。 现在我可以滚动图像但不能在上面绘图。有人可以帮我搞清楚!这是我的代码......`

    JFrame frame = new JFrame("Title");  
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(800, 800)); 

    JPanel panel = new JPanel(); 

    panel.add(new JLabel(new ImageIcon(image))); 

    JScrollPane jspane=new JScrollPane(panel);
    jspane.setViewportView(panel);
    jspane.add(this); //where i need to draw according to the mouse click
                      //when i tried frame.add(this); i was able to draw only on some  
                      //portion of the image but not able to scroll it.
    frame.add(jspane, BorderLayout.CENTER);

    frame.pack();  

    frame.setVisible(true);

1 个答案:

答案 0 :(得分:1)

  

jspane.add(本);

不要尝试将组件添加到滚动窗格。组件只能添加到视口中(您在创建JScrollPane时就已经这样做了。

如果要在标签上绘图,则需要扩展JLabel并覆盖paintComponent()方法以在图像上执行自定义绘制。

阅读Custom Painting上的Swing教程中的部分,以获取示例。