我有JFrame,其中包含一个Jscrollpane,而Jscrollpane又包含一个显示图像的Jpanel。所有鼠标事件和绘图都是对Jpanel坐标的尊重。现在,我想在ViewPort的顶部放置一个引导线标记,无论图像被缩放或平移,标记都应保持不变。最好的方法是什么?提前谢谢。
答案 0 :(得分:4)
您可以在滚动窗格的视口上执行自定义绘制:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class ViewportBackground
{
private static void createAndShowUI()
{
JViewport viewport = new JViewport()
{
@Override
protected void paintChildren(Graphics g)
{
super.paintChildren(g);
int w = this.getWidth();
int h = this.getHeight();
g.drawLine(0, 0, w, h);
}
};
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewport(viewport);
scrollPane.setViewportView( new JLabel( new ImageIcon(...) ) );
JFrame frame = new JFrame("Viewport Background");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( scrollPane );
frame.setLocationByPlatform( true );
frame.pack();
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}