2014-12-22 5 views
0

У меня есть логин JPanel, который был программно добавлен внутри JFrame. Проблема в том, что я хочу вызвать функцию на JFrame с помощью логина JPanel с помощью кнопки.Функция вызова на JFrame из класса JPanel

Здесь я объявил MainFrame, как mainFrame в классе PartLoginJPanel:

public class PartLogin extends JPanel { 

    MainFrame mainFrame; 

Затем я создал публичную функцию от JFrame, а затем назвал его из PartLogin через кнопку мыши

mainFrame.changeLabel(); 

У меня есть NullPointerException, указывающий внутри кода кнопки.

mainFrame.changeLabel(); 

ответ

2

NullPointerException обычно говорит о том, что объект, который должен был быть не нуль равно нулю. Здесь, вероятно, mainFrame. Java не C++, так что оператор равно:

MainFrame mainFrame = null; 

Вы должны изменить это так, чтобы mainFrame не равно нулю. Есть два способа: значение

  1. правопреемника в объявлении:

    MainFrame mainFrame = new MainFrame(); 
    
  2. значение правопреемника в конструкторе:

    private MainFrame mainFrame; // don't must be private 
    
    public PartLogin() 
    { 
        super(); // call ctor of superclass 
        mainFrame = new MainFrame(); 
        // ... 
    } 
    
+0

ничего себе, что работали! Я слишком очевиден, что пришел из C++? Btw, вы спасли меня: D –

+0

@PrincetonMielJurilla Если ответ сработал, пожалуйста, отметьте ответ как принятый. И C++ автоматически назначает переменные без указателей, это то, что я часто смешиваю;) – msrd0

+0

извините, это был мой первый вопрос: D спасибо за напоминание. –

Смежные вопросы