Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> правила для StyledDocument, JTextPane, как создать? 
:(
    Опции темы
Andyb
  Дата 28.4.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

Репутация: нет
Всего: 5



подскажите, народ, может, кто нибудь сталкивался с таким:
Есть JTextPane. 
Необходимо, чтобы определённый текст, 
например слово public везде(даже при условии того, что  находится внутри текста "рорроироpublicиароицу") 
отрисовывалось со своим стилем, например, жирным курсивом. уже всю голову поломал smile 
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
goodday1941
Дата 28.4.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



html  в помощь


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Andyb
Дата 28.4.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

Репутация: нет
Всего: 5



это как? smile 
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
goodday1941
Дата 28.4.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



мин за 10 набросаю пример


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 28.4.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



Код

import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;

public class Test extends JFrame {
    JEditorPane textPane;
    private static final String [] green = {"public", "private", "static"};
    private static final String [] red = {"vodka", "beer"};


    public Test() {
        initializeTextPane();
        setContentPane(new JScrollPane(textPane));
        setSize(300, 300);
    }

    private void initializeTextPane(){
        textPane = new JEditorPane();
        textPane.setEditorKit(new HTMLEditorKit());
        textPane.setText("many public people drink vodka!");

        String styled = transform(textPane.getText());

        textPane.setText(styled);
    }

    private String transform(String tmp){
        tmp = "<html>" + tmp;
        for (String s:green){
            tmp = tmp.replace(s,"<font color=\"green\">" + s + "</font>");
        }
        for (String s:red){
                    tmp = tmp.replace(s,"<font color=\"red\">" + s + "</font>");
                }
      return tmp;
    }

    public static void main (String [] args){
        Test test = new Test();
        test.setVisible(true);
    }
}


Примечания: JTextPane не потдерживает html потому использовал JEditorPane что в принцепе не имеет разницы

Добавлено @ 15:09
ну и еще.. что б автоматически изменялась подсветка слов при их вводе, просто вешаешь кейЛистенер на JTextPane и при событии нажатии кнопки перерисовываешь JTextPane методом setText

Это сообщение отредактировал(а) goodday1941 - 28.4.2007, 15:11


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 28.4.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



Цитата(goodday1941 @  28.4.2007,  15:08 Найти цитируемый пост)
ну и еще.. что б автоматически изменялась подсветка слов при их вводе, просто вешаешь кейЛистенер на JTextPane и при событии нажатии кнопки перерисовываешь JTextPane методом setText

прогнал.. теги то остаються.. нужно подумать )



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 28.4.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



есть решение щас выложу smile

Добавлено через 1 минуту и 51 секунду
Код

import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.BadLocationException;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Test extends JFrame {
    JEditorPane textPane;
    private static final String [] green = {"public", "private", "static"};
    private static final String [] red = {"vodka", "beer"};

    public Test() {
        super("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initializeTextPane();
        setContentPane(new JScrollPane(textPane));
        setSize(300, 300);
    }

    private void initializeTextPane(){
        textPane = new JEditorPane();
        textPane.setEditorKit(new HTMLEditorKit());
        textPane.addKeyListener(new Listener());
    }

    private String interpretate(String tmp){
        textPane.setText("<html>");
        for (String s:green){
            tmp = tmp.replace(s,"<font color=\"green\">" + s + "</font>");
        }
        for (String s:red){
            tmp = tmp.replace(s,"<font color=\"red\">" + s + "</font>");
        }
        tmp = tmp.replace(" ", "&nbsp;");
        return tmp;
    }

    public static void main (String [] args){
        Test test = new Test();
        test.setVisible(true);
    }

    private class Listener extends KeyAdapter{
        public void keyTyped(KeyEvent e){
            System.out.println(textPane.getText());
            try {
                textPane.setText(interpretate(textPane.getDocument().getText(0, textPane.getDocument().getLength())));
            } catch (BadLocationException e1) {
            }
        }
    }
}



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Andyb
Дата 28.4.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

Репутация: нет
Всего: 5



нет, мне нужна именно JTextPane, и одну версию реализации данного я уже написал, просто думал, может кто знает, как это проще сделать, типа по паттерну замена

goodday1941, спасибо

Это сообщение отредактировал(а) Andyb - 28.4.2007, 15:59
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
goodday1941
Дата 28.4.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



теперь слова "public", "private", "static" будут выделяться зеленым, а слова "vodka", "beer" красным

Добавлено через 1 минуту и 4 секунды
гм...тада ненаю 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Andyb
Дата 28.4.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

Репутация: нет
Всего: 5



жаль, только, такая реализация мне не подходит, но всё равно спасибо
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
goodday1941
Дата 28.4.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



гм... с JTextPane  я прогнал, с ним тоже все работает smile


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
nornad
Дата 28.4.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 6
Всего: 31



Цитата(goodday1941 @  28.4.2007,  18:08 Найти цитируемый пост)
Примечания: JTextPane не потдерживает html 

Это тебе кто такое сказал?

Цитата(goodday1941 @  28.4.2007,  18:08 Найти цитируемый пост)
ну и еще.. что б автоматически изменялась подсветка слов при их вводе, просто вешаешь кейЛистенер на JTextPane и при событии нажатии кнопки перерисовываешь JTextPane методом setText

При большом тексте твой вариант будет работать настолько жутко быстро, что я лучше не буду подбирать эпитеты.

По поводу расцветки различных слов в хтмле в эдиторпейне не помню точно, но где-то видел.
Попробуй поискать на http://www.java2s.com/ - вроде бы там примеры я и встречал.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
goodday1941
Дата 28.4.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 8
Всего: 9



Цитата(nornad @  28.4.2007,  16:21 Найти цитируемый пост)
При большом тексте твой вариант будет работать настолько жутко быстро, что я лучше не буду подбирать эпитеты.

спорить не буду ) 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.