Фокус не проблема и не имеет никакого отношения к вашей текущей проблеме. Решение состоит в том, чтобы изменить свойства сетки данных путем обновления полей, которые она содержит, с помощью методов установки и вызова перерисовки в JComponent (возможно, JPanel или некотором другом компоненте, который в конечном счете является производным от JComponent), хранящимся в сетке данных. Метод paintComponent этого компонента должен использовать поля своего класса для обновления того, что он рисует.
Вы почти никогда не рисуете в методе рисования JComponent и, конечно, вы не хотите рисовать прямо в окне верхнего уровня. Вы также, вероятно, не хотите устанавливать текст JLabels, JTextFields или любого другого JTextComponent. изнутри paint / paintComponent.
Я не понимаю, почему ваш код не работает, и могу только догадываться, что вероятная причина вашей проблемы в коде, который не показан.
Редактировать 1:
Просто угадай, но у тебя может быть проблема с ссылками. Я заметил, что ваш класс слушателя создает новые объекты DisplayForm и Storage:
DisplayForm dF = new DisplayForm();
Storage st = new Storage();
Существует хорошая вероятность, что эти объекты не отображаются, особенно если вы создаете эти объекты в другом месте и отображаете их. Опять же, я просто догадываюсь, так как я не вижу остальной части вашего кода, но, возможно, вам следует передать ссылки на эти объекты в DisplayForm через параметры метода конструктора или метода установки.
Редактировать 2:
например.,
public void setDisplayForm(DisplayForm dF) {
this.dF = dF;
}
// same for Storage
А в основной программе:
public MainDisplayForm() {
initComponents();
ButtonListener_IncreaseGain btnListenerIncreaseGain = new ButtonListener_IncreaseGain();
btnListenerIncreaseGain.setDisplayForm(....);
btnListenerIncreaseGain.setStorage(....);
Btn_IncreaseGain.addActionListener(btnListenerIncreaseGain);
}