我想突出顯示JTextArea
中的一個特定行,但我不知道如何解決這個問題。我需要獲取特定的行然後突出顯示它。我已閱讀其他帖子,但我仍然不明白如何將它集中在一起解決我的問題......幫助將不勝感激。在JTextArea中突出顯示一個特定的行/行
0
A
回答
11
嘗試在此代碼示例你的手,不要問,如果事情是不明確:
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();
}
});
}
}
這裏是它的輸出:
+1
感謝您的示例代碼,這是我所做的。 'code RectanglePainter red = new RectanglePainter(Color.RED); 嘗試{ f1.textarea.getHighlighter()addHighlight(f1.textarea.getLineStartOffset(ILINE),f1.textarea.getLineEndOffset(ILINE),紅色); //} 趕上(BadLocationException的前){ ex.printStackTrace( ); } ' – 2012-04-17 15:00:32
3
如果無法選擇TextArea到TextField的原因是按鈕點擊導致JTextArea失去焦點,因此不顯示它的選擇。 按鈕單擊事件使用btnImport.transferFocusBackward();
來解決問題。
相關問題
- 1. 突出顯示JTextArea的行
- 2. 在ListView中突出顯示特定行
- 3. 突出顯示特定的輸出行
- 4. 根據JtextArea中的給定行號突出顯示一個字符串
- 5. 突出顯示特定的行降價
- 6. 突出顯示一個特定的DIV
- 7. 顯示並突出顯示HTML中的特定行
- 8. 在eclipse中突出顯示具有特定語法的行
- 9. 在datagrid中突出顯示特定顏色的行
- 10. 在UITextView中突出顯示一行
- 11. (DevExpress)突出顯示一行
- 12. 突出顯示jtextpane中的一行; Java
- 13. 突出顯示RichTextBox中的一行
- 14. 突出顯示行中的唯一值
- 15. 突出顯示一個C#ListView行
- 16. 突出顯示所選線的JTextArea
- 17. 如何突出顯示DetailsView中的特定行?
- 18. 如何突出顯示DevExpress MVC GridView頁面中的特定行?
- 19. 突出顯示特定行中使用的單元格
- 20. 根據條件突出顯示錶中的特定行
- 21. 突出顯示DateTimePIcker中的特定值?
- 22. 突出顯示VIM中的特定列
- 23. 突出顯示特定的點在GGPLOT2
- 24. 在DataGrid中突出顯示SelectedItem的行
- 25. 突出特定的行
- 26. ListFragment:突出顯示選定的行
- 27. 突出顯示行的NSOutlineView
- 28. 突出顯示劍道網格的特定行
- 29. 如何突出顯示特定詞組的行?
- 30. 在特定時間突出顯示tableviewcell
如果您嘗試過這個美妙的POST,[如何通過@mKorbel強調](http://stackoverflow.com/questions/9650992/how-to-change-text-color-in-the-jtextarea/9651404#9651404 ) – 2012-04-17 13:01:11
-1沒有研究這個。在谷歌上彈出的第一件事是一個有效的代碼片段。 – 2012-04-17 13:01:44
我嘗試過那些,但他們並沒有解決我突出顯示特定行的問題,我試圖獲得特定的行並將其突出顯示 – 2012-04-17 13:15:50