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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> реализация некоторых методов для JTextPane, намера строк, перенос строк, размер таба 
:(
    Опции темы
philips
Дата 21.3.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.2.2008
Где: Минск

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



в общем, для JTextPane нужно реализовать методы setTabSize, setLineWrap, аналогичные как у JTextArea. 

также как можно сделать сбоку панельку с номерами строк??

заранее спс..
PM   Вверх
dorogoyIV
Дата 21.3.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(philips @  21.3.2008,  21:36 Найти цитируемый пост)
как можно сделать сбоку панельку с номерами строк??

вы вообще то знакомы с массивами?
PM MAIL   Вверх
philips
Дата 21.3.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.2.2008
Где: Минск

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



Цитата

вы вообще то знакомы с массивами? 


а поподробнее можно, пжлста?? куда и как тут массивы прикрутить??
PM   Вверх
dorogoyIV
Дата 21.3.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(philips @  21.3.2008,  22:59 Найти цитируемый пост)
а поподробнее можно, пжлста?? куда и как тут массивы прикрутить??

ну как же?

Цитата(philips @  21.3.2008,  21:36 Найти цитируемый пост)
также как можно сделать сбоку панельку с номерами строк??

нужно знать количество строк, ну и там дальше реализовывать... я не могу сказать как именно, потому, что много, очень много вариантов...
примерно: (примерно!!!, я даже не знаю, есть ли метод getRowCount() у JTextPane, мне лень посмотреть  smile )
Код

int row_count=jTextPane.getRowCount();
for(int i=0; i < row_count; i++)
{
 ...
}

PM MAIL   Вверх
philips
Дата 21.3.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.2.2008
Где: Минск

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



хм... так эт понятно.. 
подскажи лучше как связать именно JTextPane с этой панелькой с цифрами, чтоб при прокрутке текстовой области в JScrollPane эта панелька тоже прокручивалась.
PM   Вверх
dorogoyIV
Дата 22.3.2008, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ну вот один из вариантов, хотя тут можно много нафантазировать  smile 
Код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.io.*;

public class MyTextPane extends JTextPane
                        implements Runnable
{
 public MyTextPane()
 {
  new Thread(this).start();
 }

 public void appendText(String text)
 {
  try
  {
   Document doc=getDocument();
   setCaretPosition(doc.getLength());
   replaceSelection(text);
   Rectangle r=modelToView(doc.getLength());
   if(r != null)
     scrollRectToVisible(r);
  }
  catch(Exception ex){}
 }

 public void run()
 {
  try
  {
   BufferedReader br=new BufferedReader(
                     new FileReader("Base.txt"));
   String s="";
   int i=0;

   while((s=br.readLine()) != null)
   {
    Thread.currentThread().sleep(1000);
    appendText(i++ + " " + s + "\n");
   }
  }
  catch(Exception ex){}
 }

 public static void main(String[] args)
 {
  JFrame f = new JFrame();
  f.add(new JScrollPane(new MyTextPane()));
  f.setBounds(100, 100, 300, 200);
  f.setVisible(true);
  f.setDefaultCloseOperation(3);
 }
}

PM MAIL   Вверх
philips
Дата 22.3.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.2.2008
Где: Минск

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



так..

по поводу номеров линий вопрос снимается. 
прикрепил область с цифрами в JScrollPane как setRowHeaderView. а отображение цифр это было уже делом техники.  smile

а вот вопросы про размер таба и переноса слов остаются ОТКРЫТЫМИ!
PM   Вверх
Kangaroo
Дата 22.3.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(philips @  21.3.2008,  20:36 Найти цитируемый пост)
в общем, для JTextPane нужно реализовать методы setTabSize, setLineWrap, аналогичные как у JTextArea. 

А если посмотреть как они сделаны в JTextArea?


--------------------
Lost....
PM MAIL MSN   Вверх
philips
Дата 22.3.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.2.2008
Где: Минск

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



там все не так просто :/

вот метод

JТехтАреа.class :
Код

public void setTabSize(int size) {
        Document doc = getDocument();
        if (doc != null) {
            int old = getTabSize();
            doc.putProperty(PlainDocument.tabSizeAttribute, new Integer(size));
            firePropertyChange("tabSize", old, size);
        }
    }


Component.class :
Код

protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
        PropertyChangeSupport changeSupport = this.changeSupport;
        if (changeSupport == null ||
            (oldValue != null && newValue != null && oldValue.equals(newValue))) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, oldValue, newValue);
    }


BasicTextAreaUI.java :
Код

protected void propertyChange(PropertyChangeEvent evt) {
        super.propertyChange(evt);
    if (evt.getPropertyName().equals("lineWrap") ||
        evt.getPropertyName().equals("wrapStyleWord") ||
        evt.getPropertyName().equals("tabSize")) {
        // rebuild the view
        modelChanged();
    } else if ("editable".equals(evt.getPropertyName())) {
        updateFocusTraversalKeys();
    }
    }


BasicTextUI.class :
Код

protected void modelChanged() {
        // create a view hierarchy
        ViewFactory f = rootView.getViewFactory();
        Document doc = editor.getDocument();
        Element elem = doc.getDefaultRootElement();
        setView(f.create(elem));
    }


у LineWrap аналогично

даж не знаю что делать :/

Это сообщение отредактировал(а) philips - 22.3.2008, 23:16
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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