У меня есть класс MainJFrame, наследуемый от JFrame. В нём есть главная панель. Я сделал в отдельной панели код, которые меняет цвета панели, элементов на ней и шрифта. В класса MainJFrame я добавил к кнопкам из той панели ActionListener,ы. Цвета меняются, как нужно, но с если на кнопки нажимать несколько раз, то каждый раз под программу выделяется больше памяти. Я не знаю, как решить эту проблему
Вот код для класса MainJFrame
public class MainJFrame extends JFrame {
private Color one;
private Color two;
private Color three;
MainJPanel mainPanel = new MainJPanel();
public MainJFrame(){
super();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int width = (int) screenSize.getWidth();
int height = (int) screenSize.getHeight();
this.setSize(width*45/100, height*75/100);
this.setLocationByPlatform(true);
this.setLayout(new BorderLayout());
this.add(mainPanel, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
customizationButton();
this.setVisible(true);
}
private void customizationButton(){
this.mainPanel.gm.x1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
one = new Color(111, 255, 7);
two = new Color(16, 255, 255);
three = new Color(150, 25, 7);
mainPanel.c1.setTheme(one, two, thre);
}
});
this.mainPanel.gm.x2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
one = new Color(11, 2, 70);
two = new Color(16, 255, 25);
three = new Color(15, 25, 7);
mainPanel.c1.setTheme(one, two, thre);
}
});
}
}
А вот метод, меняющий цвет
public void setTheme(Color panel, Color element, Color font){
this.setBackground(panel);
x1.setBackground(element);
x2.setBackground(element);
x3.setBackground(element);
x4.setBackground(element);
x1.setForeground(font);
x2.setForeground(font);
x3.setForeground(font);
x4.setForeground(font);
}
Я пробовал делать one = null; two = null ; three = null при нажатии кнопки, но проблему это не решило.