Вот проблема, с которой я сталкиваюсь - у меня есть класс GUI, реализующий JFrame с конструктором, который создает Frame с 9 панелями в GridLayout 3x3. Каждая панель инициализируется в этом конструкторе и имеет своих собственных слушателей и т. Д. Однако, есть пункт меню «Загрузить файл для отображения», но для того, чтобы я мог сохранять / загружать файлы, у меня есть класс, предназначенный для сохранения. и загрузка. Я проверил это, и проблема заключается в том, что когда вызывается метод load в классе save / load, он создает объект GUI, следовательно, повторно создает компоненты GUI. Когда объект GUI используется для вызова метода с именемloadedFile в GUI (GUI.loadedFile), предполагается, что программа устанавливает для каждого JPanel определенный фон значения RGB. Однако, это не обновляет фоны моего JPanel. Вот часть конструктора, которая инициализирует панели и код загруженного файла:
A1 = new JPanel();
A1.addMouseListener(mouseListener);
A1.setBackground(Color.WHITE);
add(A1);
A2 = new JPanel();
A2.addMouseListener(mouseListener);
A2.setBackground(Color.WHITE);
add(A2);
A3 = new JPanel();
A3.addMouseListener(mouseListener);
A3.setBackground(Color.WHITE);
add(A3);
B1 = new JPanel();
B1.addMouseListener(mouseListener);
B1.setBackground(Color.WHITE);
add(B1);
B2 = new JPanel();
B2.addMouseListener(mouseListener);
B2.setBackground(Color.WHITE);
add(B2);
B3 = new JPanel();
B3.addMouseListener(mouseListener);
B3.setBackground(Color.WHITE);
add(B3);
C1 = new JPanel();
C1.addMouseListener(mouseListener);
C1.setBackground(Color.WHITE);
add(C1);
C2 = new JPanel();
C2.addMouseListener(mouseListener);
C2.setBackground(Color.WHITE);
add(C2);
C3 = new JPanel();
C3.addMouseListener(mouseListener);
C3.setBackground(Color.WHITE);
add(C3);
System.out.println("GUI() invoked");
}
loadedFile:
public void loadedFile(int[] colors) {
int counter = 0;
//if in a different pain program using JPanels in an array for larger canvases,
//use the JPanel[counter] set to colors[counter] for BG color. Also, enhanced
//for loop could cycle through he values of panels array and set BG.
A1.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
A2.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
A3.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
B1.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
B2.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
B3.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
C1.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
C2.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
counter+=3;
C3.setBackground(new Color(colors[counter], colors[counter+1], colors[counter+2]));
System.out.println("BGS SET");
}
Заранее спасибо всем, кто может помочь!