Альтернативный цвет текста в JTextPane - PullRequest
1 голос
/ 14 декабря 2011

Я пытаюсь чередовать цвет текста в JTextPane без изменения цвета всего JTextPane.Я нашел в Интернете класс, который позволяет вам сделать это, но когда я попытался создать объект «ColorPane», чтобы запустить предоставленный им метод, код скомпилировался, но просто не работал.Мой ноутбук только что воспроизводил типичный звук Windows no-no.Сейчас я пытаюсь просто добавить метод, который мне нужен, но я получаю некоторые ошибки несоответствия типов.

Вот класс ColorPane: (Я просто извлек методы, создавшие таблицу) http://www.java2s.com/Code/Java/Swing-JFC/ExtensionofJTextPanethatallowstheusertoeasilyappendcoloredtexttothedocument.htm

Вот метод с ошибками несоответствия типов: http://pastebin.com/jWtQK0Va

Спасибо!

1 Ответ

1 голос
/ 15 декабря 2011

Глядя на вашу проблему, кажется, что вы хотели несколько цветов внутри вашего JTextPane. Вам просто нужно поместить этот метод в ваш код и предоставить необходимые аргументы.

    public void appendToPane(String yourText, Color colour)
    {
      StyleContext sc = StyleContext.getDefaultStyleContext();
      AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, colour);
      aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");

      int len = tPane.getDocument().getLength();
      tPane.setCaretPosition(len);
      tPane.setCharacterAttributes(aset, false);
      tPane.replaceSelection(yourText);
    }

Приведенный выше метод использует следующий импорт:

  • import javax.swing.text.AttributeSet;
  • import javax.swing.text.SimpleAttributeSet;
  • import javax.swing.text.StyleConstants;
  • import javax.swing.text.StyleContext;
  • import javax.swing.JTextPane;

А tPane - это объект JTextPane. Просто, если вы хотите, чтобы ваше имя отображалось синим цветом, вызовите метод как appendToPane («ваше имя», Color.BLUE); и теперь, если вы хотите, чтобы ваш другой текст отображался красным, вызовите метод снова appendToPane ("New Text", Color.RED); надеясь, что это решит запрос, который вы запросили.

Привет

...