我自己定义了一个文字编辑框。可以编辑文字的字体颜色等属性。
但是遇到了个问题,就是选定了指定的文字之后,点击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;
}感谢各位!!!

解决方案 »

  1.   

    也不知道这个能不能嵌套JS如果可以就简单了关于这个的API楼主参考下:
    http://jdk.accptech.com/javax/swing/JEditorPane.html
      

  2.   

    最好不用嵌套js的方法,如果用嵌套js,是怎么实现呢?
    最好是用api实现。
      

  3.   

    editor.addFocusListener(new FocusAdapter()
    {
    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);
    }
    });