Мой вопрос, вероятно, имеет элементарный ответ. Я прочитал несколько руководств, но не смог найти конкретного ответа, и я только начинаю изучать концепции ООП.Как получить уникальную строку из компонентов Swing?
Ожидаемый результат: добавьте focusListener к каждому компоненту в JPanel и на этом событии с фокусировкой, получите строку, уникальную для каждого компонента (поэтому каждое текстовое поле может иметь «это поле 1», «это поле 2», и т.д.)
Проблема:
for (Component comp : bookCard.getComponents())
{
comp.addFocusListener(new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
super.focusGained(e);
//How do I implement the following line?
System.out.println(this.getUniqueString());
}
});
}
Мой класс иерархии (правильный термин) выглядит следующим образом: BookCard расширяет MainCard, MainCard расширяет JPanel. Это отлично.
Какая иерархия мне понадобится для решения этой конкретной проблемы? Что-то вроде: MyTextField расширяет MyComponent, MyComponent расширяет JComponent - где MyComponent содержит метод getUniqueString()?
Edit: Чтобы быть более конкретным, я готовлю диалог похож на диалог Microsoft Word в «добавить новый источник», который хватал пример строки из компонента, чтобы помочь пользователю. Поле «Автор» может сказать «Пример: Крамер, Джеймс Д».
Вы могли бы улучшить этот код, только создавая 1 фокус адаптера, и использовать его для всех компонентов суб – ControlAltDel
@ ControlAltDel Спасибо, что заметили, что это имеет смысл. – TrickyTrev
Обратите внимание, что 'this', вероятно, не так, как вы думаете, назовите FocusAdapter. –