私は JScrollPane 内に JEditorPane を持っています (どちらも透明です)。これらは、半透明の背景を持つ 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が初めてです