2017-12-20 12 views
12

のエディタを定義します。この列にはjava.time.LocalTime個のインスタンスが含まれています。私が関与する溶液から離れて滞在したいと思いますJTableはドキュメントに従った後、私は、Java 8を、使用していますにLocalTimeタイプ

The constructor DefaultFormatterFactory(DateTimeFormatter) is undefined 

public class LocalTimeEditor extends DefaultCellEditor { 
    JFormattedTextField ftf; 

    public LocalTimeEditor() { 
    super(new JFormattedTextField()); 
    ftf = (JFormattedTextField) getComponent(); 

    // Set up the editor for the LocalTime cells. 
    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); 
    ftf.setFormatterFactory(new DefaultFormatterFactory(dateFormatter)); 

しかし、これは、次のコンパイルエラーにつながる:LocalTimeEditorは、(仮称)によって定義される

JTable table; 
... 
table.setDefaultEditor(LocalTime.class, new LocalTimeEditor()); 

SimpleDateFormat(+ DateFormatterhereまたはhereとなります。java.util.Dateは注意してください。昔のコードhereを参照してください。

JFormattedTextFieldDateTimeFormatterを統合するためのソリューションがあり、または私がによってブロックされています:

私もそれが簡単にできないため、MaskFormatterから離れて滞在したいのですがエラーハンドリング:"25:70:90"。 DefaultFormatterFactorの引数を1として

+0

[JFormattedTextField.AbstractFormatter](https://docs.oracle.com/javase/8/docs/api/javax/swing/JFormattedTextField.AbstractFormatter.html)を拡張する必要がありますか?次に、2つの抽象メソッドを実装するだけです。 – matt

+0

JDKのjavadocの階層に従えば、あなたが述べたすべての制約の中で、JDK内には解決策がないことがはっきりと分かります。あなたの唯一のオプションは@mattが言ったようにあなた自身を実装することです。 – Gene

答えて

3

、私は私の実装では、それはかなり不器用ですが、私は、にLocalTimeのを解析して表示することができ、このことから、新たなJFormattedTextField.AbstractFormatter

class JTFormater extends JFormattedTextField.AbstractFormatter{ 
    final DateTimeFormatter formatter; 
    public JTFormater(DateTimeFormatter formatter){ 
     this.formatter = formatter; 
    } 
    @Override 
    public Object stringToValue(String text) throws ParseException { 
     return formatter.parse(text); 
    } 

    @Override 
    public String valueToString(Object value) throws ParseException { 
     if(value instanceof TemporalAccessor){ 
      return formatter.format((TemporalAccessor) value); 
     } else{ 
      throw new ParseException("not a valid type at", 0); 
     } 
    } 
} 

を作成しました。

関連する問題