2016-12-13 4 views
0

Когда я создаю панель и setLayout для BoxLayout это работает:Расширение JPanel и установка BoxLayout

JPanel pan = new JPanel(); 
    pan.setLayout(new BoxLayout(pan, BoxLayout.PAGE_AXIS)); 

Однако, когда класс называется Pan и extends JPanel я пытаюсь сделать это в конструкторе класса:

setLayout(new BoxLayout(Pan, BoxLayout.PAGE_AXIS)); 

Я получаю ошибку

Пан не может быть решена с переменной

В чем проблема?

+0

'pan' не' Pan'. Java чувствительна к регистру. Так что пишите всегда так же. – davidxxx

+0

@davidxxx Я не сделал ничего плохого в чувствительности к регистру, потому что это два разных случая. Классы должны иметь прописную букву, а переменные - нет. –

+0

** Панорамы не могут быть разрешены переменной ** при написании: 'setLayout (новый BoxLayout (Pan, BoxLayout.PAGE_AXIS));' потому что вы объявили его 'pan' выше – davidxxx

ответ

1

Pan заменит ваше использование JPanel:

Pan pan = new Pan(); 
pan.setLayout(new BoxLayout(pan, BoxLayout.PAGE_AXIS)); 

Или:

JPanel pan = new Pan(); 
pan.setLayout(new BoxLayout(pan, BoxLayout.PAGE_AXIS)); 

Edit: Вы также можете установить макет в своем классе Pan, что-то вроде:

public class Pan extends JPanel { 
    public Pan() { 
     setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 
    } 
} 
+1

Я понимаю, однако, как бы вы создали объект внутри своего конструктора? Звучит смешно –

+1

Да, спасибо! Работал с альтернативой редактирования. Узнал что-то новое :) –