Как нарисовать направляющий маркер для области просмотра JScrollPane

У меня есть JFrame, который содержит Jscrollpane, который, в свою очередь, содержит Jpanel с отображаемым в нем изображением. Все события мыши и рисование относятся к координатам Jpanel. Теперь я хочу поместить маркер направляющих линий поверх окна просмотра. Маркер должен оставаться постоянным независимо от масштабирования или панорамирования изображения. Как лучше всего это сделать? Заранее спасибо.

http://i.stack.imgur.com/m4qe2.png


person Amogh    schedule 25.11.2015    source источник
comment
Для примера   -  person MadProgrammer    schedule 25.11.2015


Ответы (1)


Вы можете сделать пользовательское рисование в окне просмотра панели прокрутки:

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();
            }
        });
    }
}
person camickr    schedule 25.11.2015
comment
Я бы выбрал paint (я такой простой), но и этот подойдет - person MadProgrammer; 25.11.2015