Last active
April 16, 2018 04:59
-
-
Save proffix4/3c35eab0259d7ef71cc8e42375d67f2b to your computer and use it in GitHub Desktop.
Java - Components of work with text data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. МЕТКА «JLabel» | |
В свойстве text можно не только задавать простейший текст, но и задавать его в виде html-текста, например: | |
<html> | |
<h1>Большой текст</h1> | |
<h2>Небольшой текст</h2> | |
<h3>Поменьше текст</h3> | |
<b>Жирная надпись</b><br> | |
<strong>Очень важный текст</strong><br> | |
<kbd>Стиль печатной машинки</kbd><br> | |
<cite>Курсив</cite><br> | |
<font color="224956">Цветная строка (цвет формата RRGGBB</font>)<br> | |
<hr> | |
<cite>Цитата</cite><br> | |
<address>Цитата в цвете</address><br> | |
<p align="center"><font size="7">Гиганский текст</font><br></p> | |
<p align="center">Текст по-центру</p> | |
<p align="right">Текст справа</p> | |
<br> | |
<p align="left">Текст слева</p> | |
<li>пункт 1<br> | |
<li>пункт 2<br> | |
</html> | |
2. ПОЛЕ ДЛЯ ВВОДА ТЕКСТА «JTextField» | |
2. 1. Примеры работы с JTextField | |
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) { | |
// Нажатие клавиши "Enter" | |
int key = evt.getKeyCode(); // Получаем код нажатой клавиши | |
if (key == KeyEvent.VK_ENTER) { // Если нажата, клавиша "Enter", то | |
// jButton1.requestFocus(); // Установить фокус на кнопку jButton1 | |
jButton1ActionPerformed(null); // Вызвать обработчик нажатия на кнопку jButton1 | |
} | |
} | |
3. МНОГОСТРОЧНОЕ ПОЛЕ | |
ДЛЯ ВВОДА/ВЫВОДА ТЕКСТА «JTextArea» | |
3.1. Пример работы с JTextArea | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Простейшая работа с JTextArea | |
jTextArea1.setText("Все работает!!!"); // Выдача текста | |
jTextArea1.selectAll(); // Выделить весь текст | |
jTextArea1.copy(); // Скопировать выделение в буфер обмена | |
//jTextArea1.cut(); //Вырезать выделенный текст в буфер обмена | |
//jTextArea1.paste(); //Вставить из буфера обмена текст | |
// Получить выделенный текст | |
jTextField1.setText(jTextArea1.getSelectedText()); | |
jTextArea1.replaceSelection("Да!"); // Заменить выделенный текст | |
jTextField2.setText(jTextArea1.getText()); // Получить весь текст | |
} | |
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Выбор строки и замена подстроки в JTextArea | |
try { | |
// Номер выбранной строки | |
int line = jTextArea1.getLineOfOffset(jTextArea1.getCaretPosition()); | |
int start = jTextArea1.getLineStartOffset(line); // Номер символа начала выбранной строки | |
int end = jTextArea1.getLineEndOffset(line); // Номер символа конца выбранной строки | |
String s = jTextArea1.getText(start, end - start); // Узнаем текст выбранной строки | |
jTextField1.setText(s); | |
jTextArea1.replaceSelection("Yes!"); // Заменяем выделенный текст на значение «Yes!» | |
} catch (Exception e) { jTextField1.setText(""); } | |
} | |
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Проход по строкам в JTextArea | |
try { | |
int line_count = jTextArea1.getLineCount() - 1; // Количество строк | |
for (int i = 0; i <= line_count; i++) { // Цикл по всем строкам | |
int start = jTextArea1.getLineStartOffset(i); // Определим начало i-ой строки | |
int end = jTextArea1.getLineEndOffset(i); // Определим конец i-ой строки | |
String s = jTextArea1.getText(start, end - start); // Узнаем текст i-ой строки | |
jTextArea1.replaceRange(Integer.toString(i + 1) + ") " + s, start, end); // Изменим строку | |
} } catch (Exception f) { jTextField1.setText(""); } | |
} | |
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Добавление строк в JTextArea | |
jTextArea1.setText(""); // Удалить весь текст в компоненте | |
jTextArea1.append("Строка 1\n"); // Добавить значение и перейти на новую строку | |
jTextArea1.append("Строка 2\n"); // Добавить значение и перейти на новую строку | |
jTextArea1.append("Строка 3"); // Добавить значение | |
} | |
3.2. Пример работы с JTextArea и динамическими массивами ArrayList | |
private void jButton_PazdrActionPerformed(java.awt.event.ActionEvent evt) { | |
// Нажатие кнопки поздравить | |
ArrayList<String> pozdr = new ArrayList<>(); // Массив пожеланий | |
ArrayList<String> fam = new ArrayList<>(); // Массив фамилий | |
jEditorPane_Pozdr.setText(null); // Очищаем область поздравлений | |
try { // Проверка введенных пользователем пожеланий | |
for (int i = 0; i < jTextArea_Gel.getLineCount(); i++) { | |
int end = jTextArea_Gel.getLineEndOffset(i); | |
int start = jTextArea_Gel.getLineStartOffset(i); | |
// Проверяем является ли строки пустой ("==" - не работает) | |
if (jTextArea_Gel.getText(start, end - start).trim().equals("")) { continue; } | |
// Добавление поздравления в массив | |
pozdr.add(jTextArea_Gel.getText(start, end - start).trim()); | |
} | |
} catch (Exception ex) { JOptionPane.showMessageDialog(rootPane, "Ошибка чтения пожеланий", | |
"Ошибка чтения", JOptionPane.ERROR_MESSAGE); | |
return; // Выход | |
} | |
try { // Проверка введенных пользователем фамилий | |
for (int i = 0; i < jTextArea_Fam.getLineCount(); i++) { | |
int end = jTextArea_Fam.getLineEndOffset(i); | |
int start = jTextArea_Fam.getLineStartOffset(i); | |
// Проверяем является ли строки пустой (== - не работает) | |
if (jTextArea_Fam.getText(start, end - start).trim().equals("")) { continue; } | |
fam.add(jTextArea_Fam.getText(start, end - start).trim()); // добавление фамилии в массив | |
} | |
} catch (Exception ex) { JOptionPane.showMessageDialog(rootPane, "Ошибка чтения фамилий", | |
"Ошибка чтения", JOptionPane.ERROR_MESSAGE); | |
return; // Выход | |
} | |
// Проверка количества поздравлений | |
if (fam.size() > pozdr.size()) { // Если фамилий больше чем поздравлений | |
JOptionPane.showMessageDialog(rootPane, "Пожеланий на всех не хватит! Уменьшите количество фамилий.", "Ошибка ввода", JOptionPane.ERROR_MESSAGE); | |
return; | |
} | |
StringBuilder s = new StringBuilder("<p align=\"center\"><cite><b><font size=\"5\">"); | |
try { // ПОЗДРАВЛЯЕМ !!! | |
for (int i = 0; i < fam.size(); i++) { | |
// Генерируем случайное число в диапазоне от 0 до длины массива поздравлений | |
int p = (int) Math.floor(Math.random() * pozdr.size()); | |
// Генерация поздравления | |
s.append("Уважаемый <font color=\"990505\">" + fam.get(i)+"</font>" | |
+ "! Желаем Вам " + | |
pozdr.get(p).toString().toLowerCase() + "!<br>"); //добавляем символ перехода на новую строку | |
pozdr.remove(p); // Удаляем элемент с индексом р из массива поздравлений | |
} | |
} catch (Exception ex) { JOptionPane.showMessageDialog(rootPane, "Ошибка генерации поздравления", | |
"Ошибка чтения", JOptionPane.ERROR_MESSAGE); | |
} | |
s.append("<br>"); | |
jEditorPane_Pozdr.setText(s.toString()); | |
} | |
4. ПАНЕЛЬ РЕДАКТОРА ТЕКСТА «JEditorPane» | |
4.1. Режим сложного оформления текста (contentType = text/html) в JEditorPane | |
При режиме contentType = text/html в свойстве text можно задавать не просто обычный текст, но и текст в виде html, например: | |
<html> | |
<head> | |
</head> | |
<body> | |
<p style="margin-top: 0"> | |
<h1>Большой текст</h1> | |
<h2>Небольшой текст</h2> | |
<cite>Курсив</cite><br> | |
<font color="224956">Цветная строка (цвет формата RRGGBB</font>)<br> | |
<hr> | |
<cite>Цитата</cite><br> | |
<address>Цитата в цвете</address><br> | |
</p> | |
</body> | |
</html> | |
4.2. Выдача текста с обычным оформлением (contentType = text/plain) в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Выдача текста с обычным оформлением в JEditorPane | |
jEditorPane1.setText("Все работает!!!"); // Выдача текста | |
jEditorPane1.selectAll(); // Выделить весь текст | |
jEditorPane1.copy(); // Скопировать выделение в буфер обмена | |
//jEditorPane1.cut(); Вырезать выделенный текст в буфер обмена | |
//jEditorPane1.paste(); Вставить из буфера обмена текст | |
// Получить выделенный текст | |
jTextField1.setText(jEditorPane1.getSelectedText()); | |
jEditorPane1.replaceSelection("Да!"); // Заменить выделенный текст | |
jTextField2.setText(jEditorPane1.getText()); // Получить весь текст | |
} | |
4.3. Выдача текста с html-форматированием в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Выдача текста с html-форматированием в JEditorPane | |
jEditorPane1.setContentType("text/html;Content-Type=windows-1251"); | |
jEditorPane1.setText("<html><body>Все работает!!!</body></html>"); | |
} | |
4.4. Выдача текста с расширенным оформлением текста в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Выдача текста с расширенным оформлением текста в JEditorPane | |
HTMLDocument hd = new HTMLDocument(); // HTMLDocument | |
jEditorPane1.setContentType("text/html"); // Режим сложного оформления текста | |
jEditorPane1.setDocument(hd); // Связывание jEditorPane1 и HTMLDocument | |
jEditorPane1.setText("Hello World"); // Выдача текста в компонент | |
MutableAttributeSet attr = new SimpleAttributeSet(); // Атрибуты текста | |
StyleConstants.setFontFamily(attr, "Arial"); // Установка шрифта | |
StyleConstants.setBackground(attr, Color.red); // Установка цвета | |
StyleConstants.setItalic(attr, true); // Установка наклонного стиля текста | |
hd.setCharacterAttributes(6, 4, attr, false); // Установить атрибуты 4 символам начиная с 6-го | |
} | |
4.5. Подсветка искомого значения в JeditorPane | |
(только при расширенном оформлении текста) | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Подсветка искомого значения в JEditorPane | |
// Получение содержимого документа | |
DefaultStyledDocument doc = (DefaultStyledDocument) jEditorPane1.getDocument(); | |
MutableAttributeSet attr = new SimpleAttributeSet(); // Атрибуты текста | |
StyleConstants.setBackground(attr, new Color(255, 255, 177)); // Установка цвета | |
String s2 = jTextField1.getText().toUpperCase(); // Искомый текст большими буквами | |
String s = null; // Текст документа | |
int d = s2.length(); // Длина искомого текста | |
try { | |
// Получение текста документа большими буквами | |
s = doc.getText(0, doc.getLength()).toUpperCase(); | |
} catch (BadLocationException ex) { | |
} | |
int k = 1, k2 = 0; // Инициализация переменных | |
while (k > 0) { // Цикл пока находится искомое значение | |
k = s.indexOf(s2, k2); // Поиск искомого значения в тексте документа | |
if (k > 0) { // Если поиск успешен, то | |
// Установка атрибутов тексту документа | |
doc.setCharacterAttributes(k, d, attr, false); k2 = k + d; | |
} | |
} | |
} | |
4.6. Загрузка внешней WEB html-страницы в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка внешней WEB html-страницы в JEditorPane | |
jEditorPane1.setContentType("text/html"); // Режим сложного оформления текста | |
jEditorPane1.setEditable(false); // Запрет на редактирование документа | |
try { jEditorPane1.setPage("http://www.google.ru"); // Загрузка данных с html-страницы | |
} catch (IOException e) { } | |
} | |
4.7. Загрузка внешней локальной html-страницы в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка внешней локальной html-страницы в JEditorPane | |
try { | |
jEditorPane1.setContentType("text/html");// Режим сложного оформления текста | |
jEditorPane1.setEditable(false); // Запрет на редактирование документа | |
// Загрузка данных из html-страницы | |
jEditorPane1.setPage(new File("d:/demo.html").toURI().toURL()); | |
} catch (MalformedURLException ex) { | |
} catch (IOException ex) { | |
} | |
} | |
4.8. Загрузка локальной (из каталога готового jar-файла) html-страницы в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка локальной (из каталога готового jar-файла) html-страницы в JEditorPane | |
try { | |
jEditorPane1.setContentType("text/html");// Режим сложного оформления текста | |
jEditorPane1.setEditable(false); // Запрет на редактирование документа | |
jEditorPane1.setPage(getClass().getClassLoader(). | |
getResource("mypackage/demo.html").toURI().toURL());// Загрузка данных из html-страницы | |
} catch (MalformedURLException | URISyntaxException ex) { | |
} catch (IOException ex) { | |
} | |
} | |
private void jEditorPane1HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { | |
// Установка возможности перехода по гипер-ссылкам в JEditorPane | |
HyperlinkEvent.EventType type = evt.getEventType(); | |
final URL url = evt.getURL(); | |
if (type != HyperlinkEvent.EventType.ENTERED) | |
if (type == HyperlinkEvent.EventType.ACTIVATED) { | |
Document doc = jEditorPane1.getDocument(); | |
try { jEditorPane1.setPage(url); } | |
catch (IOException ioException) { jEditorPane1.setDocument(doc); } | |
} | |
} | |
4.9. Выдача текста с rtf-документа в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка с диска rtf-файла в JEditorPane | |
try { | |
jEditorPane1.setContentType("text/rtf");// Режим сложного оформления текста | |
jEditorPane1.setEditable(false); // Запрет на редактирование документа | |
jEditorPane1.setPage(new File("d:/demo.rtf").toURI().toURL()); | |
} catch (MalformedURLException ex) { | |
} catch (IOException ex) { | |
} | |
} | |
4.10a. Загрузка локального (из каталога готового jar-файла) rtf-файла в JEditorPane (только для Windows) | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка локального (из каталога готового jar-файла) rtf-файла в JEditorPane | |
jEditorPane1.setContentType("text/rtf");// Режим сложного оформления текста | |
jEditorPane1.setEditable(false); // Запрет на редактирование документа | |
URL urlToRtf = getClass().getClassLoader().getResource("mypackage/demo.rtf"); | |
try { jEditorPane1.setPage(urlToRtf); } catch (IOException ex) { | |
} | |
} | |
4.10b. Загрузка локального (из каталога готового jar-файла) rtf-файла в JEditorPane (для Windows и Linux) | |
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка локального (из каталога готового jar-файла) rtf-документа в JEditorPane | |
{ | |
try { | |
jEditorPane1.setContentType("text/rtf"); | |
jEditorPane1.setEditable(false); | |
jEditorPane1.setText(""); | |
jEditorPane1.read(getClass().getClassLoader(). | |
getResourceAsStream("tsn_jedoc_2016/JEDoc/" + jComboBox1.getSelectedItem().toString() + ".rtf"), null); | |
jEditorPane1.setCaretPosition(0); | |
} catch (Exception ex) { | |
} | |
}; | |
} | |
4.11. Загрузка rtf-файла с текущего каталога в JEditorPane | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка rtf-файла с текущего каталога в JEditorPane | |
try { // Получаем полное имя RTF-файла в текущем каталоге | |
String FileName = new File(".").getAbsoluteFile().getParentFile().getAbsolutePath() | |
+ System.getProperty("file.separator") + "demo.rtf"; | |
jEditorPane1.setContentType("text/rtf"); // Устанавливаем режим rtf-документов | |
jEditorPane1.setPage(new File(FileName).toURI().toURL()); // Загружаем RTF-документ | |
} catch (MalformedURLException ex) { | |
} catch (IOException ex) { | |
} | |
} | |
4.12. Запись данных из JEditorPane в rtf-файл текущего каталога | |
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Запись данных из JEditorPane в rtf-файл текущего каталога | |
try { // Получаем полное имя RTF-файла в текущем каталоге | |
String FileName = new File(".").getAbsoluteFile().getParentFile().getAbsolutePath() | |
+ System.getProperty("file.separator") + "demo.rtf"; | |
// Считываем содержимое документа | |
Document doc = jEditorPane1.getDocument(); | |
FileOutputStream out = new FileOutputStream(FileName); | |
RTFEditorKit rtf = new RTFEditorKit(); // Инструментарий работы с RTF | |
rtf.write(out, doc, 0, doc.getLength()); // Запись документа в rtf-файл на диск | |
} catch (IOException | BadLocationException ex) { | |
} | |
} | |
4.13. Очистка данных в JEditorPane | |
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Очистка данных в JEditorPane | |
jEditorPane1.setText(""); | |
} | |
4.14. Установка типа и размера шрифта по-умолчанию в jEditorPane для html и rtf-режимов | |
private void formWindowOpened(java.awt.event.WindowEvent evt) { | |
// Установка типа и размера шрифта по-умолчанию в jEditorPane | |
new StyledEditorKit.FontFamilyAction("Tahoma", "Tahoma").actionPerformed(null); | |
new StyledEditorKit.FontSizeAction("16", 16).actionPerformed(null); | |
} | |
4.15. Загрузка txt-файла в JEditorPane с помощью диалога выбора файла | |
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Загрузка txt-файла в JEditorPane с помощью диалога выбора файла | |
try { | |
JFileChooser fileopen = new JFileChooser(); // Создаем объект выбора файла | |
int ret = fileopen.showDialog(null, "Открыть файл"); // Вызываем диалог | |
if (ret != JFileChooser.APPROVE_OPTION) { return; } // Если файл не выбран, то выход | |
File FileName = fileopen.getSelectedFile(); // Получение имени файла | |
// Открываем потоки чтения из файла | |
FileInputStream stream = new FileInputStream(FileName); | |
InputStreamReader reader = new InputStreamReader(stream); | |
BufferedReader buffered_reader = new BufferedReader(reader); | |
String txt = ""; String buf; // Инициализация переменных | |
// Загрузка текста из файла | |
while ((buf = buffered_reader.readLine()) != null) { | |
txt += buf + "\r\n"; | |
} | |
jEditorPane1.setText(txt); // Установить считанный из файла текст в jEditorPane1 | |
buffered_reader.close(); reader.close(); stream.close(); // Закрытие потоков чтения | |
} catch (FileNotFoundException ex) { | |
} catch (IOException ex) { | |
} | |
} | |
4.16. Сохранение текста из JEditorPane в txt-файл с помощью диалога | |
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Сохранение текста из JEditorPane в txt-файл с помощью диалога выбора файла | |
try { | |
JFileChooser fileopen = new JFileChooser(); // Создаем объект выбора файла | |
int ret = fileopen.showDialog(null, "Сохранить файл"); // Вызываем диалог | |
if (ret != JFileChooser.APPROVE_OPTION) { return; } // Если файл не выбран, то выход | |
File FileName = fileopen.getSelectedFile(); // Получение имени файла | |
// Считываем содержимое документа | |
PlainDocument doc = (PlainDocument) jEditorPane1.getDocument(); | |
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(FileName)); | |
String txt = doc.getText(0, doc.getLength()); // Считываем текст из jEditorPane1 | |
out.write(txt); // Сохраняем текст в файл | |
out.close(); // Закрываем файл | |
} catch (IOException | BadLocationException ex) { | |
} | |
} | |
5. КОМПОНЕНТ «JPasswordField» (поле пароля) | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Получить введенный пароль из компонента JPasswordField | |
jTextField1.setText(String.valueOf(jPasswordField1.getPassword())); | |
} | |
6. КОМПОНЕНТ «JFormattedTextField» (форматируемое поле) | |
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { | |
// Пример чтения данных с компонента JFormattedTextField | |
jTextField1.setText(jFormattedTextField1.getText()); // Получить введенное значение по шаблону | |
jTextField2.setText(jFormattedTextField1.getValue().toString());// Получить введенное значение | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment