Java Swing:JEditor Pane文本在突出显示时不可见

时间:2018-02-28 08:34:51

标签: java swing text jeditorpane invisible

我们的JEditor窗格有问题。在窗格中突出显示文本时,文本部分不可见。如果我们单击窗格外的GUI中的某个位置,文本将再次可见。 那应该是什么样子

enter image description here

该文本标记为

时的外观

enter image description here

我们的项目是两个或更多程序的调试器。 这是初始化EditorPane的代码:

private void initCodeArea() {
    codePanel = new JPanel();
    listBreakpointLines = new ArrayList<>();

    editor = new JEditorPane();
    editor.setEditorKit(new StyledEditorKit() {
        @Override
        public ViewFactory getViewFactory() {
            return new CustomViewFactory(super.getViewFactory());
        }
    });
    Font font = new Font("SansSerif", Font.PLAIN, 12);
    editor.setFont(font);

    editor.addMouseListener(new MouseListener() {

        @Override
        public void mouseReleased(MouseEvent e) {

        }

        @Override
        public void mousePressed(MouseEvent e) {
            if (e.getClickCount() == 2) {
                if (e.getX() > 0 && e.getX() < MARGIN_WIDTH_PX) {
                    int height = editor.getFontMetrics(editor.getFont()).getHeight();
                    int lineID = e.getY() / height + 1;
                    if (!listBreakpointLines.contains(lineID)) {
                        listBreakpointLines.add(lineID);
                        controlFacade.createBreakpoint(id, lineID);
                    } else {
                        listBreakpointLines.remove((Integer) lineID);
                        controlFacade.deleteBreakpoint(id, lineID);
                    }
                }
                editor.updateUI();
            }
        }

        @Override
        public void mouseExited(MouseEvent e) {
            mainInterface.saveText();
        }

        @Override
        public void mouseEntered(MouseEvent e) {

        }

        @Override
        public void mouseClicked(MouseEvent e) {

        }
    });

    codeScrollPane.setViewportView(editor);

    codeScrollPane.setPreferredSize(new Dimension(400, 300));
    codePanel.add(codeScrollPane);
}

这是在EditorPane中设置文本的方法:

public void setText(String programText) {
    editor.setText(programText);
    listModel.clear();
    variableInspectorList.updateUI();
}

其余代码可以在我们的GitHub存储库(dev-Branch)中找到:

GitHub repository

0 个答案:

没有答案