我们的JEditor窗格有问题。在窗格中突出显示文本时,文本部分不可见。如果我们单击窗格外的GUI中的某个位置,文本将再次可见。 那应该是什么样子
该文本标记为
时的外观我们的项目是两个或更多程序的调试器。 这是初始化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)中找到: