2013-09-12 2 views
0

Я хочу установить разные размеры табуляции в текстовой области, построчно. Может ли кто-нибудь дать мне решение для этого. Является ли это возможным? Я хочу, после ввода текста в текстовой области, когда я нажимаю кнопку форматирования, хочет добавить вкладку для каждой строки. линия 1 - нет вкладки линии 2 - 1 таб линии 3 - 2 вкладки линии 4 - 3 вкладкиХочет форматировать текст в JTextArea

+1

"Дайте нам Preciouses" Нет, но если серьезно, вы могли бы быть немного более d escriptive? Опубликовать код? что ты уже испробовал? и т. д. –

+0

Я не собираюсь это делать. В любом случае я хочу преобразовать текст в соответствии со стандартом кодирования. Например, когда я нажимаю ctrl + k в переполнении стека – RSST

+0

@camickr не волнуйтесь, мой будет отмечен как ответ достаточно скоро ;-P – SnakeDoc

ответ

3

Вы читали API? API имеет методы, которые говорят вам:

  1. Сколько строк в текстовой области
  2. Отправной смещение каждой линии.

Я дам вам прочитать API, чтобы найти методы.

Затем вы создадите цикл и получите начальное смещение каждой строки. Затем вы используете:

textArea.getDocument().insertString(...); 

для ввода соответствующего количества вкладок «\ t» для каждой строки.

+0

Я прочитал его. Но я не знаю, что такое атрибут. – RSST

+1

Текстовая область не поддерживает атрибуты, поэтому вы просто используете 'null'. – camickr

3

Я думаю, что размер заставки по умолчанию или длина зависит от ОС/системы. \t Я считаю, что делает 4 места по умолчанию на окнах ....

Что касается добавления вкладок после новой линии - вы могли бы сделать что-то вроде:

line.replace("\n", "\n\t"); 

или

line.replaceAll("\n", "\n\t"); 

в зависимости от вашего прецедента.

, если вам нужно в закладку каждый раз немного дальше, попробовать что-то вроде:

String tabSpacing = "\n\t"; 
for (int i = 0; i < lines.length; i++) { 
    String line = lines[i].replace("\n",tabSpacing); 
    tabSpacing += "\t"; 
} 

Стоит отметить, что символ новой строки отличается от некоторых системных сред. Например, Windows использует crlf (возврат каретки, фид строки), в то время как * nix использует только lf (фид строки).

Так что в java вы либо используете \r\n, либо просто \n в зависимости от системной среды. Один из способов обойти это можно было бы назвать свойством системы.

System.getProperty("line.separator"); 

это может быть использовано в сочетании:

final String lineSeparator = System.getProperty("line.separator"); 
line.replace(lineSeparator, lineSeparator += "\t"); 

... и т.д.

UPDATE -- Основываясь на комментарий от OP - вы можете проверить это SO нить для того, как форматировать текст в Java Standard форматирования исходного кода: Java library for code beautify/format

+1

+1, не выполняет то, что описал ОП (или, может быть, я не понимаю описание ОП), но ваше предложение является гораздо лучшим требованием, чем то, о чем попросил ОП. – camickr

1

Попробуйте использовать setLeftIndent и определить различные стили для каждой строки :

http://goo.gl/nA7opA (setleftindent страница человек)

Стили пример: http://goo.gl/8Yda5p

Смежные вопросы