扩展 JFormattedTextField

Extend JFormattedTextField

我正在扩展 JFormattedTextField 以添加侦听器。我有这个工作,虽然它可能不是最好的方法。没有办法使用单个通用构造函数吗?

public class TimeLineTextClass extends JFormattedTextField {

/**
 * 
 */
private static final long serialVersionUID = 1L;

private TimelineRecord timeLine;

public TimeLineTextClass (NumberFormat tlformat_,HashMap<Integer,JComponent> fieldList_,int field_,TimelineRecord timeLine_) {
    super(tlformat_);
    timeLine=timeLine_;
    getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void changedUpdate(DocumentEvent e) {
            // Ignore - Using plain document

        }

        @Override
        public void insertUpdate(DocumentEvent e) {
            timeLine.setObject((String) getClientProperty("type"),getText());
        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            timeLine.setObject((String) getClientProperty("type"),getText());
        }

    });
}

public TimeLineTextClass (SimpleDateFormat tlformat_,HashMap<Integer,JComponent> fieldList_,int field_,TimelineRecord timeLine_) {
    super(tlformat_);
    timeLine=timeLine_;
    getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void changedUpdate(DocumentEvent e) {
            // Ignore - Using plain document

        }

        @Override
        public void insertUpdate(DocumentEvent e) {
            timeLine.setObject((String) getClientProperty("type"),(String) getText());
        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            timeLine.setObject((String) getClientProperty("type"),(String) getText());
        }

    });
}

}

似乎应该有一种方法可以只使用一个具有通用格式类型的构造函数作为第一个参数并用于 'super'。 TIA.

就像 JFormattedTextField 构造函数一样,您可以使用类型 Format 来捕获 NumberFormat 类型和 SimpleDateFormat 类型。