我真正需要做的是...... 画在图像上(通常是大的)。我需要滚动图像来绘制它。 为此,我将图像(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);
答案 0 :(得分:1)
jspane.add(本);
不要尝试将组件添加到滚动窗格。组件只能添加到视口中(您在创建JScrollPane时就已经这样做了。
如果要在标签上绘图,则需要扩展JLabel并覆盖paintComponent()方法以在图像上执行自定义绘制。
阅读Custom Painting上的Swing教程中的部分,以获取示例。