我自己定义了一个文字编辑框。可以编辑文字的字体颜色等属性。
但是遇到了个问题,就是选定了指定的文字之后,点击fontchoose或者sizechoose一类的combo下拉框或者颜色选择弹出框时,之前选择的文字失去了焦点,高亮效果也就消失了。
请问如何在失去焦点以后仍然能让文字有高亮效果??下面我解释一下我这个的结构,代码如下
public class JEditor extends JPanel
implements ActionListener, ItemListener
{
JEditorPane editor; // 文字编辑区。就是它内部的文字被选择后,用户去操作font_name、colors等控件时,高亮就消失了。
JComboBox font_name;
JComboBox font_size;
JComboBox colors;
ActionListener font_size_action_listener;
ActionListener font_name_action_listener;
ActionListener color_action_listener;
JButton submit;
Vector font_name_list;
}感谢各位!!!
但是遇到了个问题,就是选定了指定的文字之后,点击fontchoose或者sizechoose一类的combo下拉框或者颜色选择弹出框时,之前选择的文字失去了焦点,高亮效果也就消失了。
请问如何在失去焦点以后仍然能让文字有高亮效果??下面我解释一下我这个的结构,代码如下
public class JEditor extends JPanel
implements ActionListener, ItemListener
{
JEditorPane editor; // 文字编辑区。就是它内部的文字被选择后,用户去操作font_name、colors等控件时,高亮就消失了。
JComboBox font_name;
JComboBox font_size;
JComboBox colors;
ActionListener font_size_action_listener;
ActionListener font_name_action_listener;
ActionListener color_action_listener;
JButton submit;
Vector font_name_list;
}感谢各位!!!
http://jdk.accptech.com/javax/swing/JEditorPane.html
最好是用api实现。
{
Object h = null;
Highlighter highlighter = new DefaultHighlighter();
DefaultHighlighter.DefaultHighlightPainter highlighterPainter =
new DefaultHighlighter.DefaultHighlightPainter (null);
public void focusLost(FocusEvent e)
{
editor.setHighlighter(highlighter);
try
{
h = highlighter.addHighlight(editor.getSelectionStart(),
editor.getSelectionEnd(),highlighterPainter);
}
catch (BadLocationException e1)
{
e1.printStackTrace();
}
}
public void focusGained(FocusEvent e)
{
highlighter.removeHighlight(h);
}
});