Skip to content

Instantly share code, notes, and snippets.

@proffix4
Last active April 16, 2018 04:59
Show Gist options
  • Save proffix4/3c35eab0259d7ef71cc8e42375d67f2b to your computer and use it in GitHub Desktop.
Save proffix4/3c35eab0259d7ef71cc8e42375d67f2b to your computer and use it in GitHub Desktop.
Java - Components of work with text data
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