逃避JTextfield中的角色

时间:2013-01-24 15:28:08

标签: java swing escaping jtextfield

我想知道是否有一种简单的方法来处理JTextField中的转义字符。问题是getText()将转义转义字符。当然,这在大多数情况下都是首选行为,但如果您希望允许用户自由地为CSV文件(包括\ t)提供分隔符,则不会这样做。有什么想法吗?

鲍勃

3 个答案:

答案 0 :(得分:1)

您始终可以覆盖swing组件中任何和所有公共函数的行为。它被称为“专业化”。例如,您可以创建自己的MyJTextField类并覆盖getText()方法。

答案 1 :(得分:0)

JTextField只是一个View,所以它里面总是有一个模型,这个模型是Document类。你可以试试这个:

    JTextField f = new JTextField();

    // your JTextField is being filled somehow with text ...

    Document document = f.getDocument();
    try {
        String text = document.getText(0, document.getLength());
    } catch (BadLocationException ex) {
    }

也许当您从Document实例而不是JTextField实例收集文本时,它不会被转义;

答案 2 :(得分:0)

我知道这对你来说可能有点迟了,但我找到了解决这个问题的简单方法:

JTextfield field = new JTextField();
/*someone puts a string into it*/
escapeFulString = field.getText().replace("\\t","\t");
System.out.println(escapeFulString);

这将打印出包含所有标签的字符串。要添加任何其他转义序列,只需执行相同的过程。 只是不要忘记,java字符串方法不要编辑到位,例如:

text.replace("\\t","\t") 
//is not the same as
text = text.replace("\\t","\t");