Пули неупорядоченного списка выглядят неровно в JEditorPane

Я использую неупорядоченный список HTML для отображения текста в JEditorPane. Пример HTML выглядит следующим образом:

<ul><li>Cautious</li>
<li>Curious</li>
</ul>

Это работает все хорошо, но странным образом пули, генерируемые <li> не выглядите так же, как текст рядом с ним. (Запуск Mac OS 10.7.5, если это имеет значение). Круглые пули выглядят блочными и неровными:

Нормальный зум:

Увеличено в:

Как особенно очевидно, когда он увеличен, это просто блок пикселей, которые не являются симметричными и не имеют какой-либо формы сглаживания, что приводит к менее чем убедительной круговой пуле. По сравнению с текстом рядом с ним, он выглядит "не совсем", даже при нормальном увеличении.

Есть ли способ, которым я могу это исправить?

РЕДАКТИРОВАТЬ: использование символа • (опция + 8 на Mac) создает меньшую точку маркера в тексте, которая не выглядит пиксельной. Я мог бы, конечно, вставить этот символ вручную, а не используя <ul><li>, но я бы хотел использовать неупорядоченный список HTML, если смогу.

2 ответа

Решение

Используйте подсказки рендеринга, чтобы включить свойство сглаживания KEY_ANTIALIASING,

Вы устанавливаете некоторые подсказки рендеринга глобально, но это, кажется, не работает для KEY_ANTIALIASINGтак что вам нужно переопределить paint() метод JEditorPane,

public class HTMLTest {    

      public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
          @Override
          public void run() {
            String html = "<ul><li>Cautious</li><li>Curious</li></ul>";
            JEditorPane pane = new JEditorPane("text/html", html) {

              public void paint(Graphics g) {
                Graphics2D g2d = (Graphics2D) g.create();
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                super.paint(g2d);
                g2d.dispose();
              }

            };
            pane.setVisible(true);

            JOptionPane.showMessageDialog(null, pane);
          }
        });    
      }
}

Вам нужно изменить точки пули. Создайте изображение более привлекательной маркированной точки, а затем добавьте CSS на панель редактора, чтобы оно использовало ваше новое изображение маркера.

JEditorPane pane = new JEditorPane();
String u = "C:/path/to/bullet.png";
HTMLEditorKit htmlEditorKit = (HTMLEditorKit) pane.getEditorKit();
StyleSheet styleSheet = htmlEditorKit.getStyleSheet();
styleSheet.addRule(String.format("ul{list-style-image:url(%s);margin:0px 20px;", u));
Другие вопросы по тегам