【问题标题】:JEditorPane translucent background selection bugJEdi​​torPane 半透明背景选择bug
【发布时间】: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


【解决方案1】:

这些在 JPanel 内,具有半透明背景。当我选择 JEditorPane 中的文本时,我得到了这个奇怪的错误:

查看Backgrounds With Transparency 了解可能存在的问题和一些解决方案。

【讨论】:

  • 根据 NetBeans,AlphaContainer(该链接所暗示的)不存在 O.o
  • @DanSpiteri,这就是您从该站点下载代码的原因,或者如果您不喜欢下载代码,则需要自定义您自己的类的 paintComponent() 方法。该链接还提供了该方法的示例。
猜你喜欢
  • 1970-01-01
  • 2015-11-12
  • 2015-07-13
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多