【发布时间】:2013-12-02 03:58:59
【问题描述】:
我有一个 JEditorPane,在 JScrollPane 内(都是透明的)。这些在具有半透明背景的 JPanel 内。当我选择 JEditorPane 中的文本时,我得到了这个奇怪的错误:
所以不在同一个 JPanel 中的其他元素,围绕选择的“幽灵”,在这个截图中可以看到更多:
Java GUI 对我来说是第一次,我只做过没有 gui 的服务器端应用程序。
面板代码:
@SuppressWarnings("serial")
public class NewsPanel extends JPanel {
private JEditorPane newsArea;
public NewsPanel() {
setLayout(new BorderLayout());
setBackground(new Color(226, 0, 0, 179));
loadContent();
setSize(500,400);
}
private void loadContent() {
newsArea = new JEditorPane();
newsArea.setEditable(false);
newsArea.setBorder(BorderFactory.createEmptyBorder());
newsArea.setSelectionColor(Color.GRAY);
newsArea.setOpaque(false);
newsArea.setBackground(new Color(0, 0, 0, 0));
HTMLEditorKit kit = new HTMLEditorKit();
StyleSheet styleSheet = kit.getStyleSheet();
styleSheet.addRule("A {color:#0088CC}");
styleSheet.addRule("#newsHeader {font-weight:bold;font-size:14px;color:#339933;}");
styleSheet.addRule("#newsBody {font-size:10px;padding-left:20px;}");
newsArea.setEditorKit(kit);
JScrollPane scrollPane = new JScrollPane(newsArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
add(scrollPane, BorderLayout.CENTER);
scrollPane.getViewport().setBackground(new Color(0, 0, 0, 0));
scrollPane.getViewport().setOpaque(false);
scrollPane.setViewportBorder(BorderFactory.createEmptyBorder());
scrollPane.setOpaque(false);
scrollPane.setBackground(new Color(0, 0, 0, 0));
scrollPane.setBorder(BorderFactory.createEmptyBorder());
}
@Override
public void paint(Graphics g) {
super.paint(g);
}
@Override
public boolean isOptimizedDrawingEnabled() {
return false;
}
public void reload() {
removeAll();
loadContent();
validate();
repaint();
}
}
任何想法如何解决?我确信它很简单,但就像我说的,我是 UI 的新手
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
同意........
-
否则在这里搜索怎么可能(两种不同的方式)
-
请注意,在 160 LOC 时,我认为该来源足够“短”(尽管它还需要
main(String[])才能将其实际显示在屏幕上)。但是,如果我尝试将其复制/粘贴到问题中,它会丢失格式。 -
要点已更新,作为 UI 新手,我不确定是什么创建了更新等,但从我在互联网上发现的可能导致更新的事物中,我将它们留在了.
标签: java swing user-interface jeditorpane visual-glitch