All
Я пытаюсь сделать так, чтобы свойства моего узла имели Единицы, связанные с мерой. (Я использую JScience.org реализацию JSR 275). Например,
public class Robot extends AbstractNode {
// in kg
float vehicleMass;
@Override
public Sheet createSheet() {
Sheet s = Sheet.createDefault();
Sheet.Set set = s.createPropertiesSet();
try {
PropertySupport.Reflection vehicleMassField = new PropertySupport.Reflection(this, float.class, "vehicleMass");
vehicleMassField.setValue("units", SI.KILOGRAMS);
vehicleMassField.setName("vehicleMass");
set.put(vehicleMassField);
PropertyEditorManager.registerEditor(float.class, UnitInPlaceEditor.class);
} catch (NoSuchMethodException ex) {
Exceptions.printStackTrace(ex);
}
s.put(set);
return s;
}
}
Я хочу, чтобы мой UnitInPlaceEditor добавлял единицы измерения в конец строкового представления числа, и при щелчке поля (вход в режим редактирования) единицы исчезают, и для редактирования выбирается только число. Я могу заставить единицы отображаться, но не могу заставить единицы исчезнуть, когда поле входит в режим редактирования.
public class UnitsInplaceEditor extends PropertyEditorSupport implements ExPropertyEditor {
private PropertyEnv pe;
@Override
public String getAsText() {
// Append the unit by retrieving the stored value
}
@Override
public void setAsText(String s) {
// strip off the unit, parse out the number
}
public void attachEnv(PropertyEnv pe) {
this.pe = pe;
}
}
Вот скриншот дисплея - мне нравится вот так ..
альтернативный текст http://grab.by/grabs/b921a00e5167596c14d9d1d1d359561b.png
но вот редактируемое значение; обратите внимание, что устройство остается там.
альтернативный текст http://grab.by/grabs/81e3aadf8c9b1185adc09e14e91a0aae.png
В основном я хочу, чтобы одно значение (строка) отображалось в поле, когда поле НЕ редактируется, и другое, которое должно отображаться, когда пользователь начинает редактировать поле. За исключением этого, я хотел бы поставить постоянную метку для единиц (не редактируемых) справа от текстового поля.
Кто-нибудь знает, как это сделать?