Java Swing JScrollPane номер строки сбой - PullRequest
2 голосов
/ 29 марта 2012

У меня есть простая JEditorPane внутри JScrollPane, которая отображает номера строк на левой стороне. Он прекрасно работает, за исключением случаев, когда вы перемещаете окно за пределы экрана и снова тянете его назад, при прекращении перетаскивания это выглядит так:

enter image description here

есть идеи? Нужно ли мне прослушивать событие перемещения / перетаскивания и вызывать перерисовку / повторную проверку где-нибудь?

Думал, что это может быть что-то очевидное, но вот код. Я использую JSyntaxPane.

    public EditorPanel()
        {
            this.setLayout(new BorderLayout());

            PythonSyntaxKit.initKit();
            codeEditor = new JEditorPane();
            JScrollPane scrPane = new JScrollPane(codeEditor);
            Dimension d = new Dimension(710,702);
            codeEditor.setPreferredSize(d);
            codeEditor.setContentType("text/python");
            codeEditor.setText("Welcome to PhysUtil!");
            this.add(scrPane, BorderLayout.CENTER);

            toolbar = new PhysUtilToolbar();
            this.add(toolbar, BorderLayout.PAGE_START);

            this.repaint();
            }
//from MainFrame Class...
public EditorPanel mainEditor;
    public MainFrame()
    {
        //Someone can figure out how to load the icon...kept throwing an error
        //ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
        PhysUtilMenuBar menuBar = new PhysUtilMenuBar();
        this.mainEditor = new EditorPanel();
        menuBar.editorPanel = mainEditor;

        this.setJMenuBar(menuBar);
        this.setTitle("PhysUtil");
        this.setLocationRelativeTo(null);       
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.add(mainEditor);
        Image icon = Toolkit.getDefaultToolkit().getImage("icon.jpg");
        this.setIconImage(icon);
        this.setSize(800, 800);
        this.setLocation(0, 0);
        this.setVisible(true);
    }

1 Ответ

2 голосов
/ 30 марта 2012

Добавьте WindowListener / WindowStateListener / WindowFocusListener ... и посмотрите, какие события запускаются, если вы перетаскиваете свое приложение.на дополнительный экран и / или обратно.Оттуда, если вы знаете, что сработали события, попробуйте прослушать финальное событие (каким бы оно ни было) и сделать вашу область редактора недействительной (сделать ее грязной) и перекрасить ее.SSCCE тоже поможет.

...