У меня есть класс с именем MainUI, который расширяет JFrame, он имеет следующий код:проблемы в переопределение JFrame.setBackground()
//Constructor
public MainUI(){
// components/panels are already defined and initialized here.
setBackground(Color.decode("#EFF4E4"));
}
@Override
public void setBackground(Color colorbg){ //a method to set the same background color for all the components I ave
getContentPane().setBackground(colorbg);
decisionPanel.setBackground(colorbg);
adbRadio.setBackground(colorbg);
fastbootRadio.setBackground(colorbg);
commandRadio.setBackground(colorbg);
pushPanel.setBackground(colorbg);
uninstallPanel.setBackground(colorbg);
pcPanel.setBackground(colorbg);
phonePanel.setBackground(colorbg);
}
однако, когда я компилирую, это дает NullPointerException на линии [decisionPanel.setBackground (colorbg); ]
Я попытался не переопределять метод setBackground и переименовал его, и код работал нормально, я не знаю, почему переопределение метода setBackground вызывает проблему?
Я уверен, что все панели/компоненты инициализированы перед вызовом метода, это очевидно, так как код действительно работал только после того, как я переименовал этот метод.
Вы уверены, что решениеPanel правильно инициализировано при попытке установить BG? –
Я не вижу, где вы создаете solutionPanel. – FredK
Скорее всего потому, что setBackground вызывается при построении 'JFrame' (до вашего' // определения компонентов/панелей') – copeg