2016-06-09 17 views
1

Я пытаюсь определить ярлык кнопки поворота с помощью строки, а затем преобразовать строку в имя кнопки, а затем использовать имя для установки метки.Как вы можете получить название кнопки поворота по строке?

Как-то это не работает, и я попытался использовать getClass(); и Class.forName();

Вот мой пользовательский класс, где я пытаюсь изменить метку кнопки, введя имя кнопки в виде строки;

public void zet(String scl){ 
Class c = scl.getClass(); 
//Class c = Class.forName(scl); 
if (beurt) { 
    c.setLabel("X"); 
    beurt = false; 
} // end of if 
else{ 
    c.setLabel("O"); 
    beurt = true; 
}} 

Может кто-нибудь, пожалуйста, помогите мне с этим? Спасибо заранее.

+0

Почему вы хотите сделать это так? Что вы пытаетесь достичь? Можете ли вы объяснить немного больше, пожалуйста? – hamena314

+0

Я хотел создать класс, который автоматически изменил бы несколько элементов кнопок. Единственное, что вы должны определить при вызове класса, - это имя самой кнопки, которая будет сохранена в строке, я хотел бы преобразовать строку таким образом, что я могу использовать его, чтобы изменить метку указанной кнопки. – Lolslayer

ответ

1

Вы не можете этого сделать.

Отражение Java и класс для имени не позволяют вам это делать. Не существует компонента, который отслеживает те JButtons, которые вы создали «через new()» раньше, и позволили бы найти его только по его «имени».

Если вам нужен такой вид функциональности, вы должны реализовать свой собственный «реестра», что-то вроде:

Map<String, JComponent> componentsByName = new HashMap<>(); 
... then you add components like 
componentsByName.put("button-1", someJButton); ... 
... and later on, 
(componentsByName.get("button-1")).setLabel() ... 

Другими словами: особенно если вы новичок, не думайте, что вам просто нужно чтобы услышать название «концепции», чтобы иметь возможность использовать его. Вместо этого вы всегда должны предполагать, что все может быть сложнее, и что вам нужно потратить некоторое серьезное время, чтобы прочитать документацию о понятии, которое вы слышали, чтобы понять, действительно ли это то, что вам нужно; и если да, то как его использовать.

+0

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

+0

Не хотел быть грубым. Но это очень опыт, который я здесь сделал: нельзя предполагать, что «имена» в одиночку (например, «forName()») говорят вам, что вам нужно делать. – GhostCat

 Смежные вопросы

  • Нет связанных вопросов^_^