Я получаю сообщение об ошибке NullPointerException во время выполнения, когда пытаюсь нажать кнопку параметров на моем JFrame.JFrame - это CharSelection (), и я хочу отключить его, чтобы я не мог ничего щелкнуть по этому JFrame и должен нажать кнопку «Назад», чтобы включить его снова.Это код для кнопки.
JButton btnOptions = new JButton("Options");
btnOptions.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
CharSelection.disabled();
GameMenu.getMusicOption().setVisible(true);
}
});
btnOptions.setForeground(Color.WHITE);
btnOptions.setFocusPainted(false);
btnOptions.setBackground(Color.BLACK);
btnOptions.setBounds(10, 669, 200, 50);
contentPane.add(btnOptions);
Внутри события mouseClicked я пытаюсь отключить, а затем получить другой jFrame. Я точно знаю, что могу получить другой JFrame, если отключить отключение.строка, метод, который я использую для отключения JFrame, - это метод, который я создал в классе CharSelection. Вот и все.
public static void disabled(){
frame.setEnabled(false);
}
У меня кадр создан как
private static CharSelection frame;
Thisизбегает любых ошибок компиляции, но всякий раз, когда я запускаю программу и нажимаю эту кнопку с этим кодом, ничего не происходит, и я получаю ошибку NullPointerException.Не уверен, как это исправить, но вы также должны знать, что я делаю то же самое в первом Jframe GameMenu.За исключением того, что JFrame отключает без проблем, я пытался выяснить эту проблему в течение нескольких дней, тратя около 4 часов в день исключительно на эту проблему и не могу понять это.
Ошибкакод такой:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at game.CharSelection.disabled(CharSelection.java:1925)
at game.CharSelection$34.mouseClicked(CharSelection.java:1748)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Самые важные строки - первые три.Я могу только размышлять о том, что является причиной этого, и, не зная причины, у меня нет способа это исправить.Спасибо за помощь, спасибо.
Надеюсь, это поможет вам увидеть код, я вынул все ненужные вещи.
private static CharSelection frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame = new CharSelection();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public CharSelection() {
JButton btnOptions = new JButton("Options");
btnOptions.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
CharSelection.disabled();
GameMenu.getMusicOption().setVisible(true);
}
});
btnOptions.setForeground(Color.WHITE);
btnOptions.setFocusPainted(false);
btnOptions.setBackground(Color.BLACK);
btnOptions.setBounds(10, 669, 200, 50);
contentPane.add(btnOptions);
}
public static void disabled(){
frame.setEnabled(false);
}
public static void enabled(){
frame.setEnabled(true);
}