Передача строкового аргумента в Java метод рисования - PullRequest
0 голосов
/ 31 января 2020

В настоящее время я пытаюсь передать строку, содержащую цвет, в метод рисования Java, но в настоящее время получаю ошибку. Любые советы, как это сделать?

    public void paint(Graphics g) { 
    super.paint(g);

  String colorRED = "Color.red";

  g.setColor(colorRED);
}

1 Ответ

0 голосов
/ 31 января 2020

Тогда, возможно, вы должны позволить своему пользователю ввести целочисленное значение (значение цвета RGB вместо строки), а затем сделать что-то вроде

g.setColor(new Color(rgbValue));

С другой стороны, если вы действительно хотите, чтобы он вводил Строки, вам, вероятно, понадобится карта, которая отображает строки на цвета, подобные этому

Graphics g = null;
String userInput = null;

// Retrieve / initialize the graphics and the user input

Map<String, Color> colors = new HashMap<>();
colors.put("RED", Color.RED);
colors.put("BLUE", Color.BLUE);
// ... add more colors

Color color = colors.get(userInput);
if (color != null) {
  g.setColor(color);
} else {
  System.out.println("Sorry, unknown color!");
}

И, наконец, если вы действительно хотите, чтобы вход String ссылался непосредственно на цвета, определенные констатами в Color класс, тогда вы можете использовать отражение и сделать что-то вроде этого:

Graphics g;

// Initialize Graphics

String colorString = "CYAN";
try {
  Color color = (Color) Color.class.getField(colorString).get(null);
  System.out.println(color);
  g.setColor(color);
} catch (NoSuchFieldException | IllegalAccessException e) {
  System.out.println("Sorry, unknown Color!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...