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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление прокрутки к JEditorPane, как сделать? 
V
    Опции темы
filipp76
Дата 28.4.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добавляю на вкладку jTabbedPane(jTab) компонент jEditorPane(Tab).
Создаю его так:

Код

Tab=new JEditorPane();
Tab.setContentType("text/html");
Tab.setText("");
Tab.setEditable(false);
jTab.addTab(Usname, Tab);


Добавляю текст в него, а прокрутки нет, как её сделать?(только вертикальную)

Текст читаю с него так:
Код

((JEditorPane)jMainFrm.jTab.getComponentAt(pru)).getText();

Напишите пожалуйста как мне читать текст с него(jEditorPane(Tab)) после добавления прокрутки, как мне кажется что-то изменится. Еще одно, после каждого добавления текста текст должен прокручиватся в самый низ.

Это сообщение отредактировал(а) filipp76 - 28.4.2007, 14:22
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 28.4.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



JScrollPane в помощь.. помещяешть в таб JScrollPane, а в него помещяешь уже свой JTextPane
если юзать метод JTextPane.setText то вроде прокручивает сразу в самый низ, хотя не факт, не проверял

Добавлено @ 14:38
Цитата(filipp76 @  28.4.2007,  14:05 Найти цитируемый пост)
((JEditorPane)jMainFrm.jTab.getComponentAt(pru)).getText();

это как то сложно...
почму не просто Tab.getText()  ?

Добавлено @ 14:40
Цитата(filipp76 @  28.4.2007,  14:05 Найти цитируемый пост)
 как мне кажется что-то изменится.

нет, все по прежнему останеться


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


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


Бывалый
*


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

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



Цитата(goodday1941 @  28.4.2007,  14:36 Найти цитируемый пост)
это как то сложно...почму не просто Tab.getText()  ?

Потому что закладка создается в потоке, а данные надо считывать с другово потока.

Сделал так:
Код

  JScrollPane jScrollPane1 = new JScrollPane();          
  Tab.setContentType("text/html");
  Tab.setText("");
  Tab.setEditable(false);
  Tab.setAutoscrolls(true);
  jScrollPane1.add(Tab,0);
  jScrollPane1.setViewportView(Tab);

Прокрутка етсь но теперь я не могу считать текст с jEditorPane.
Пробую так:
Код

     JScrollPane sc=((JScrollPane)jTab.getComponentAt(jTab.getSelectedIndex()));
     String stn=((JEditorPane)sc.getComponent(0)).getText();

но выкидывает ошибку на второй строчке...что делать?

Попробовал еще так:
Код

  JScrollPane jScrollPane1 = new JScrollPane();       
  Tab.setContentType("text/html");
  Tab.setText("");
  Tab.setEditable(false);
  Tab.setAutoscrolls(true);
  jScrollPane1.setViewportView(Tab);
  jMainFrm.jTab.addTab(Usname, jScrollPane1);

читаю так:
Код

((JEditorPane)((JScrollPane) jTab.getComponentAt(jTab.getSelectedIndex())).getViewport().getView()).getText()

При компиляции никаких ошибок нет, но при выполнении получаю это
Код

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JScrollPane cannot be cast to javax.swing.JEditorPane



Это сообщение отредактировал(а) filipp76 - 28.4.2007, 15:42
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 28.4.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



гм.. ну и что что работа с потоками в чем собсно проблема юзать Tab.getText()?


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


Бывалый
*


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

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



Цитата(goodday1941 @  28.4.2007,  15:42 Найти цитируемый пост)
гм.. ну и что что работа с потоками в чем собсно проблема юзать Tab.getText()?

Пример, есть поток "А" и поток "Г". В потоке "А" ты создаеш закладку в JTabbedPane, который находится на какой нить форме. Поток "Г" понятия не имеет о переменной Tab, если написать в нем Tab.getText() он скажет я такой переменной не знаю)).
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 28.4.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



понятно... ну тут просто взаимодействие классов нужно продумать.. тогда все всё будут знать

Добавлено через 3 минуты и 2 секунды
к примеру есть класс к которому имеют доступ оба потока... тогда при переключении табов ты вызываешь метод этого класа что то типо setActiveTextpane(JTextPane a) и туда заносишь свой Tab, в другом же потоке вызываешь метод getActiveTextPane() что вернет тебе твой JTextPane ну и уже у него вызываешь метод getText

Добавлено через 5 минут и 34 секунды
Код

import javax.swing.*;

public class Test extends JFrame {
    JTextPane textPane;

    public JTextPane getTextPane() {
        return textPane;
    }

    public void setTextPane(JTextPane textPane) {
        this.textPane = textPane;
    }
}



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


Эксперт
***


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

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



Цитата(filipp76 @  28.4.2007,  18:02 Найти цитируемый пост)
Прокрутка етсь но теперь я не могу считать текст с jEditorPane.
Пробую так:

А сделать поле для хранения ссылки на JEditorPane разве трудно?
Или у тебя заранее неизвестно, будет ли эдиторпейн на панели или нет?


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


Опытный
**


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

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



в конструктор обоих классов добовляешь что то по типу:

Код

 class T1 {
        Test test;
        public T1(Test test, /* другие переменные*/) {
            this.test = test;
            // далее текс программы
        }
    }
    

     
Код

 class T2 {
        Test test;
        public T2(Test test, /* другие переменные*/) {
            this.test = test;
            // далее текс программы
        }
    }



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


Бывалый
*


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

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



Мне это все не подходит, обьясню подробней.
Вот так было раньше:
Код

  Tab.setContentType("text/html");
  Tab.setText("");
  Tab.setEditable(false);
  jMainFrm.jTab.addTab(Usname, Tab);

(Создается в потоке!)
Для считывания с любого!!! места кода и класса, использовал это:
(Считаю это лучший вариант, не надо никаких хранений ссылок,  дополнительных переменных и т.д.)
Код

((JEditorPane)jMainFrm.jTab.getComponentAt(jTab.getSelectedIndex())).getText();

В таком варианте все работает но нет прокрутки о которой я раньше не подумал.
Еще раз вопрос! Как добавить прокрутку и как после этого считывать текст?
Почитал этот пост, сделал все также но не работает.

Это сообщение отредактировал(а) filipp76 - 28.4.2007, 16:32
PM MAIL WWW ICQ   Вверх
filipp76
  Дата 28.4.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нашел ошибку у себя, все работает вот так:
Код

  JScrollPane jScrollPane1 = new JScrollPane();       
  Tab.setContentType("text/html");
  Tab.setText("");
  Tab.setEditable(false);
  Tab.setAutoscrolls(true);
  jScrollPane1.setViewportView(Tab);
  jMainFrm.jTab.addTab(Usname, jScrollPane1);


Читаю так:
Код

String newS=((JEditorPane)((JScrollPane) jMainFrm.jTab.getComponentAt(jMainFrm.jTab.getSelectedIndex())).getViewport().getView()).getText();


Спасибо всем за внимание!

Это сообщение отредактировал(а) filipp76 - 28.4.2007, 16:54
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 28.4.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

import javax.swing.*;

public class Test extends JFrame {
    public Test() {
        super("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       JTabbedPane tabbedPane = new JTabbedPane();
        JTextPane a = new JTextPane();
              a.setText("sdgsdgsdgsd");
        JScrollPane scrollPane = new JScrollPane(a);
        tabbedPane.addTab("1", scrollPane);
        setContentPane(tabbedPane);
        setSize(300, 300);
        System.out.println(((JTextPane) (((JScrollPane)tabbedPane.getComponent(0)).getViewport().getView())).getText());
    }
    public static void main (String [] args){
         Test test = new Test();
         test.setVisible(true);
     }
}

вот те вариант.. ненаю чего у тя не работало


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


Бывалый
*


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

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



Все работало,просто я растерялся и не видел очевидного))
PM MAIL WWW ICQ   Вверх
nornad
Дата 28.4.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(filipp76 @  28.4.2007,  19:53 Найти цитируемый пост)
Читаю так:
Код

String newS=((JEditorPane)((JScrollPane) jMainFrm.jTab.getComponentAt(jMainFrm.jTab.getSelectedIndex())).getViewport().getView()).getText();


Цитата(filipp76 @  28.4.2007,  19:28 Найти цитируемый пост)
(Считаю это лучший вариант, не надо никаких хранений ссылок,  дополнительных переменных и т.д.)

Ну да, куча постоянных приведений типов и получение компонента по индексу - явно лучший вариант. Особенно по скорости.  smile 


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


Бывалый
*


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

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



Цитата(nornad @  28.4.2007,  18:31 Найти цитируемый пост)
Особенно по скорости.

Благо 21 век на дворе и при скорости современных компьютеров понятие скорости выполнение в данном случае, просто не имеет смысла.
Я за этот вариант потому что могу одной строчкой обратится к компоненту, это мне кажется довольно удобно, в настоящее время понятие "удобно" имеет больший приоритет над "скоростью" smile 

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


Эксперт
***


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

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



Цитата(filipp76 @  28.4.2007,  22:07 Найти цитируемый пост)
Благо 21 век на дворе и при скорости современных компьютеров понятие скорости выполнение в данном случае, просто не имеет смысла.

Свежо предание.  smile 

Цитата(filipp76 @  28.4.2007,  22:07 Найти цитируемый пост)
это мне кажется довольно удобно

на вкус и цвет... как тут кто-то уже говорил, "все фломастеры разные"  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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