提示文本与JTextPane



我使用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>");
            }
        }
    });
txtNm.getText().isEmpty()

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

检查两种情况下实际返回的内容。你可以试着分析txtNm.getDocument().getLength()检查它是否为空

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

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

……

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

…例如,它们都对应于你所说的"空字符串"。但是,字符串之间并不相等。

相关内容

  • 没有找到相关文章

最新更新