Я пытаюсь выделить только одну определенную строку в JTextArea
, но я понятия не имею, как это происходит. Мне нужно получить конкретную строку, а затем выделить ее. Я читал другие сообщения, но я до сих пор не понимаю, как собрать их вместе, чтобы решить мою проблему ... помощь была бы очень оценена.Выделите одну конкретную строку/строку в JTextArea
ответ
Попробуйте свои руки на этом примере кода, и не спросить, если что-то не ясно:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class TextHighlight
{
private JTextArea tarea;
private JComboBox cbox;
private JTextField lineField;
private String[] colourNames = {"RED", "ORANGE", "CYAN"};
private Highlighter.HighlightPainter painter;
private void createAndDisplayGUI()
{
final JFrame frame = new JFrame("Text HIGHLIGHT");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5), "Highlighter JTextArea"));
tarea = new JTextArea(10, 10);
JScrollPane scrollPane = new JScrollPane(tarea);
contentPane.add(scrollPane);
JButton button = new JButton("HIGHLIGHT TEXT");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
int selection = JOptionPane.showConfirmDialog(
frame, getOptionPanel(), "Highlighting Options : ", JOptionPane.OK_CANCEL_OPTION
, JOptionPane.PLAIN_MESSAGE);
if (selection == JOptionPane.OK_OPTION)
{
System.out.println("OK Selected");
int lineNumber = Integer.parseInt(lineField.getText().trim());
try
{
int startIndex = tarea.getLineStartOffset(lineNumber);
int endIndex = tarea.getLineEndOffset(lineNumber);
String colour = (String) cbox.getSelectedItem();
if (colour == colourNames[0])
{
System.out.println("RED Colour");
painter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED);
tarea.getHighlighter().addHighlight(startIndex, endIndex, painter);
}
else if (colour == colourNames[1])
{
System.out.println("ORANGE Colour");
painter = new DefaultHighlighter.DefaultHighlightPainter(Color.ORANGE);
tarea.getHighlighter().addHighlight(startIndex, endIndex, painter);
}
else if (colour == colourNames[2])
{
System.out.println("CYAN Colour");
painter = new DefaultHighlighter.DefaultHighlightPainter(Color.CYAN);
tarea.getHighlighter().addHighlight(startIndex, endIndex, painter);
}
}
catch(BadLocationException ble)
{
ble.printStackTrace();
}
}
else if (selection == JOptionPane.CANCEL_OPTION)
{
System.out.println("CANCEL Selected");
}
else if (selection == JOptionPane.CLOSED_OPTION)
{
System.out.println("JOptionPane closed deliberately.");
}
}
});
frame.add(contentPane, BorderLayout.CENTER);
frame.add(button, BorderLayout.PAGE_END);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel getOptionPanel()
{
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 2, 5, 5));
JLabel lineNumberLabel = new JLabel("Enter Line Number : ");
lineField = new JTextField(10);
JLabel colourLabel = new JLabel("Select One Colour : ");
cbox = new JComboBox(colourNames);
panel.add(lineNumberLabel);
panel.add(lineField);
panel.add(colourLabel);
panel.add(cbox);
return panel;
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new TextHighlight().createAndDisplayGUI();
}
});
}
}
Вот выход из него:
спасибо за ваш пример кода, это то, что я сделал вместо этого. 'код RectanglePainter красный = новый RectanglePainter (цвет.RED); попытка { f1.textarea.getHighlighter() addHighlight (f1.textarea.getLineStartOffset (АйЛайн), f1.textarea.getLineEndOffset (АйЛайн), красный);. // } задвижка (BadLocationException ех) { ex.printStackTrace (); } ' –
Если вы не можете выбрать Причина TextArea to TextField заключается в нажатии кнопки, что приводит к тому, что JTextArea теряет фокус и, следовательно, не показывает его выбор. при использовании события нажатия кнопки btnImport.transferFocusBackward();
для решения проблемы.
- 1. Выделите текст на JTextArea
- 2. Выделите другой текст в JTextArea
- 3. В диаграмме флота jquery выделите только одну конкретную линию сетки
- 4. Удалить конкретную строку в JTextarea
- 5. Выделите одну строку в Android
- 6. Выделите конкретную точку в ggplot2
- 7. Выделите конкретную область изображения с помощью .maphilight()
- 8. Выделите одну строку в UITextView
- 9. JTable Выделите конкретную таблицу для обновления
- 10. Swing app.only показывает одну запись в JTextArea
- 11. Выделите строку в соответствии с заданным номером строки в JtextArea
- 12. WPF - выделите одну строку в ListBox
- 13. Выделите только одну строку в JQuery
- 14. Отображение arraylist с Jtextarea за одну итерацию?
- 15. Сделать одну конкретную цель в дереве Makefile
- 16. Как извлечь одну конкретную группу в dplyr
- 17. Оценить одну конкретную функцию в операторе JavaScript
- 18. Запустите одну конкретную строку в csv-файле
- 19. Введите конкретную строку в консоль вместо целого JTextArea
- 20. Excel Выделите одну строку на основе другой
- 21. Выделите конкретную базу строк на содержимое в jQuery datatables
- 22. Сделать XStream игнорировать одну конкретную переменную
- 23. Дайте запас на одну конкретную ячейку, UICollectionVIew
- 24. Прочитайте одну конкретную ячейку Numpy матрицы
- 25. Заставить пользователя выбрать только одну конкретную ячейку
- 26. C# Показать только одну конкретную панель?
- 27. Apache Pig. Получить одну конкретную запись
- 28. убить одну конкретную сессию запуска приложения C#
- 29. Выделите одну ячейку в то время, в коллекции View
- 30. Выделите конкретную ссылку на D3.JS диаграмме Санок
Вы попробовали этот замечательный POST, [Как выделить @mKorbel] (http://stackoverflow.com/questions/9650992/how-to-change-text-color-in-the-jtextarea/9651404#9651404) –
-1 для того, чтобы не исследовать это. Первое, что появилось в Google, - это фрагмент кода, который работал. –
Я пробовал те, но они не решают мою проблему выделения определенной строки, я пытаюсь получить определенную строку и выделяю ее –