显示JTextArea中的字符数

时间:2012-01-12 10:43:13

标签: java swing document jtextarea

我正在寻找一个示例来显示用户已经在Java JTextArea中输入的字符数。我想在JTextArea中有一个限制字符数(255)。

JTextArea kommentarArea = new JTextArea(11, 10);
kommentarArea.setLineWrap(true);
kommentarArea.setWrapStyleWord(true);

AbstractDocument pDoc = (AbstractDocument) kommentarArea.getDocument();
pDoc.setDocumentFilter(new DocumentSizeFilter(MAXCOMMENTCHARS));
int option = JOptionPane.showOptionDialog(null, kommentarArea, "Bitte geben Sie einen   Kommentar ein", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, imexIcon, null, null);
if (option == JOptionPane.YES_OPTION && kommentarArea.getDocument().getLength() <= MAXCOMMENTCHARS)
    return kommentarArea.getText();
else if (kommentarArea.getDocument().getLength() > MAXCOMMENTCHARS) {
    throw new CommentTooLongException("Die Länge der Kommentare ist länger als 255 Zeichern");
} else {
    LOGGER.info("Versenden der Datei wurde abbrechen");
    System.exit(0);
}

我使用Java教程中的DocumentSizeFilter。但是,我希望在此对话框中有一个文本标签,以便用户可以看到在JTextArea中输入了多少个字符

2 个答案:

答案 0 :(得分:1)

您可以附加监听器(收听TextEvenDocumentEvent),当文本太长时,您会向用户发送警告。

答案 1 :(得分:1)

您可以使用DocumentListener侦听textarea的更改:

kommentarArea.getDocument().addDocumentListener(new DocumentListener {
    public void insertUpdate(DocumentEvent event) {
        if (kommentarArea.getDocument().getLength() > 255) {
            JOptionPane.showMessageDialog(null, "Die Länge der Kommentare ist länger als 255 Zeichern");
        }
    }

    public void removeUpdate(DocumentEvent e) {
        if (kommentarArea.getDocument().getLength() > 255) {
            JOptionPane.showMessageDialog(null, "Die Länge der Kommentare ist länger als 255 Zeichern");
        }
    }

    public void changeUpdate(DocumentEvent event) {
        if (kommentarArea.getDocument().getLength() > 255) {
            JOptionPane.showMessageDialog(null, "Die Länge der Kommentare ist länger als 255 Zeichern");
        }
    }
});