Цвета должны быть набраны в текстовом поле, чтобы нарисовать или добавить форму, которая должна изменить цвет. Это означает, что когда пользователь вводит синий цвет, цветовой круг или круг станут синими. Однако я не получаю результат. Я выбрал круг, и он дает пробел. Ничья просто нарисует обычный черный. Я думаю, что этот кусок кода является проблемой gc.setFill(getJavaFXColorMap().get(ke.getText()));
Вот некоторые из кодов. Дайте мне знать, если вам нужно больше кодов.
ОБНОВЛЕНИЕ: внизу
//colorText will change color used to draw on the canvas.
colorText.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
//if the key entered is the "Enter" button, do this following code.
if (ke.getCode().equals(KeyCode.ENTER)) {
canvas.setOnMousePressed(q -> {
try {
if (getJavaFXColorMap().get(ke.getText()) == getJavaFXColorMap().get(ke.getText())) {
gc.setFill(getJavaFXColorMap().get(ke.getText()));
}
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
System.out.println("It is not working sorry");
e.printStackTrace();
}
});
}
}
});
Вот метод всех цветов
public Map<String, Color> getJavaFXColorMap() throws NoSuchFieldException {
Field[] declaredFields = Color.class.getDeclaredFields();
Map<String, Color> colors = new HashMap<>();
for (Field field : declaredFields) {
if (Modifier.isStatic(field.getModifiers()) && Modifier.isPublic(field.getModifiers())) {
try {
colors.put(field.getName(), (Color)field.get(null));
} catch (SecurityException | IllegalArgumentException | IllegalAccessException ex) {
Logger.getLogger(PaintJFX.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
return colors;
}
ОБНОВЛЕНИЕ: вот что я делаю, я получаю неверную спецификацию цвета. Я попробовал то, что вы сказали.
// method for converting string to color
private Color setFillOfShape(String colorName) {
Color colorNameAgain = Color.web(colorName);
return colorNameAgain;
}
//colorText will change color used to draw on canvas.
colorText.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
//if the key entered is the "Enter" button, do this following code.
if (ke.getCode().equals(KeyCode.ENTER)) {
canvas.setOnMousePressed(q -> {
if (setFillOfShape(ke.getText()) == setFillOfShape(ke.getText())) {
gc.setFill(setFillOfShape(ke.getText()));
}
});
}
}
});