使用JTextPane提示文本

时间:2015-09-29 14:20:56

标签: jtextfield jtextpane jtextcomponent

我使用JtextPane作为JTextField来使用Html进行样式化。但是我无法实现提示文本功能......我的代码也是......

    JTextPane txtNm = new JTextPane();
    txtNm.setContentType("text/html");
    txtNm.addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent arg0) {
            if(txtNm.getText().equals("<html><font face='Tw Cen MT' size='4' color='GRAY'>&nbsp;NAME</font><font color='red'>&nbsp;*</font></html>")){
                txtNm.setText("");
                //System.out.println("in txtnmfocus");
                txtNm.setForeground(Color.decode("#003366"));
            }
        }
        @Override
        public void focusLost(FocusEvent e) {
            if(txtNm.getText().isEmpty()){
                txtNm.setText("<html><font face='Tw Cen MT' size='4' color='GRAY'>&nbsp;NAME</font><font color='red'>&nbsp;*</font></html>");
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

txtNm.getText().isEmpty()

永远不会是空的。对于HTMLEditorKit,它至少返回<html><body></body></html>,因此永远不会为空。

检查两种情况下真正返回的内容。您可以尝试分析txtNm.getDocument().getLength()检查它是否为空

答案 1 :(得分:0)

getText()返回的文本应该使用像Jsoup这样的HTML解析器来处理。这是因为......

"<html><body></body></html>"

...和...

"<html>
    <body>
    </body>
</html>"

...例如,对应于你所谓的“空字符串”。但是,字符串并不相等。