integer
, float
, string
및 date
의 4 가지 형식을 허용하는 입력란이 필요합니다. 사용자가 날짜 입력을 요구하면 UI는 날짜 선택 도구를 표시합니다. JXDatePicker의 동적 JFormattedTextField
JFormattedTextfield
와
JXDatePicker
을 만든 단일 텍스트 필드를 동적으로
Integer
,
Float
,
String
및
Date
입력을 처리 할 수있는
JFormattedTextfield
의 포맷 공장을 할당 할 UI를 단순화합니다. 구현의 코드는 다음과 같은 :
는
public void setFormat(String format)
{
// requires integer format
if (IntegerAttribute.TYPE_NAME.equals(format)) {
setBoundFormatFactory(new DefaultFormatterFactory(new NumberFormatter(NumberFormat.getInstance())));
}
// requires float format
else if (FloatAttribute.TYPE_NAME.equals(format)) {
setBoundFormatFactory(new DefaultFormatterFactory(new NumberFormatter(new DecimalFormat(FLOAT_FORMAT))));
}
else if (DateAttribute.TYPE_NAME.equals(format)
|| DateTimeAttribute.TYPE_NAME.equals(format)
|| TimeAttribute.TYPE_NAME.equals(format)) {
// requires date format
setDateFormat(model.getDateFormat());
}
else {
// otherwise set to us string
setBoundFormatFactory(new DefaultFormatterFactory());
}
}
public void setDateFormat(String dateFormat)
{
setBoundFormatFactory(new DefaultFormatterFactory(new DateFormatter(new SimpleDateFormat(dateFormat))));
}
private void setBoundFormatFactory(DefaultFormatterFactory factory)
{
m_formattedTextfield.setFormatterFactory(factory);
}
구현 따라서 정수를위한 그러나 문자열 및 날짜 형식에 대해 작동하며 JXDatePicker는 날짜 데이터 형식으로 캐스팅하려고하는 것 같다 수레와
클래스 캐스트 원인 예외 :
java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Date
at org.jdesktop.swingx.plaf.basic.BasicDatePickerUI$Handler.editorPropertyChange(BasicDatePickerUI.java:1359)
at org.jdesktop.swingx.plaf.basic.BasicDatePickerUI$Handler.propertyChange(BasicDatePickerUI.java:1336)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at java.awt.Component.firePropertyChange(Component.java:8163)
at javax.swing.JFormattedTextField.setValue(JFormattedTextField.java:782)
at javax.swing.JFormattedTextField.commitEdit(JFormattedTextField.java:513)
날짜 선택 도구가 필드가 숫자 형식 일 때 값을 캐스팅하지 못하도록하는 방법이 있습니까? 또는 다른 해결 방법이 있습니까?
당신이 달성하려고하는 것을 이해하지 못합니다. JXDatePicker는 날짜를 처리하도록 설계되었지만 그 이상도 아무것도 없습니다 :-) – kleopatra
당신은'int','float'을 처리 할 수있는 JFormattedTextField를 원합니다. '날짜'와'문자열'? –
또한 정수와 부동 소수점의 차이를 어떻게 알 수 있습니까? 입력에'.' –