Я попытался импортировать свой графический элемент управления (файл jar) в конструктор сцены, но безуспешно. Файл был создан с помощью eclipse export -> jar. Когда он был выбран в конструкторе сцены «Импорт файла JAR / FXML», в диалоге импорта ничего не было.
Мой элемент управления - это TextField с TextFormatter:
import java.text.NumberFormat;
import java.text.ParseException;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.util.StringConverter;
public class CustomTextField extends TextField {
public CustomTextField() {
setText("Custom");
NumberTextFormatter formatter = new NumberTextFormatter(new StringConverter<Number>() {
@Override
public String toString(Number object) {
return object.toString();
}
@Override
public Number fromString(String string) {
try {
return NumberFormat.getInstance().parse(string);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
});
setTextFormatter(formatter);
}
public static class NumberTextFormatter extends TextFormatter<Number> {
public NumberTextFormatter(StringConverter<Number> valueConverter) {
super(valueConverter);
}
}
}
Я уверен, что виновником является использование TextFormatter. Поскольку элемент управления будет работать (появится в диалоге импорта), если я удалил TextFormatter из кодов.
Что не так?
Обновление: даже если я упростил мой конструктор, чтобы исключить setTextFormatter (), до тех пор, пока в нем все еще есть строка объявления TextFormatter, проблема все еще сохраняется. Такие как:
public CustomTextField() {
setText("Custom");
TextFormatter<Integer> formatter = new TextFormatter<Integer>(new IntegerStringConverter());
}