我使用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'> NAME</font><font color='red'> *</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'> NAME</font><font color='red'> *</font></html>");
}
}
});
txtNm.getText().isEmpty()
从来不是空的。对于HTMLEditorKit,它至少返回<html><body></body></html>
,因此永远不会为空。
检查两种情况下实际返回的内容。你可以试着分析txtNm.getDocument().getLength()
检查它是否为空
getText()
返回的文本应该用Jsoup这样的HTML解析器处理。这是因为……
"<html><body></body></html>"
……
"<html>
<body>
</body>
</html>"
…例如,它们都对应于你所说的"空字符串"。但是,字符串之间并不相等。