Я знаю, что использование null Layout
не является хорошим способом сделать приложение GUI
, но я думаю, что это случай, когда я должен его использовать.Использование нулевого макета или нет в конкретном случае
У меня есть JPanel
, которым управляет LayoutManager
, и в этом JPanel есть несколько панов. В частности, в конкретном JPanel я должен рисовать линии и добавлять в конце этих строк некоторые JComponent
, которые я создал.
В двух словах, что я делаю что-то вроде этого
JPanel p=new JPanel();
p.setLayout(null);
.....
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
......
g.drawLine(0,0,50,50);
JComponent s=new myJComponent();
s.setBounds(50,50,10,10);
this.add(s);
.......
}
Мой вопрос, может быть, немного философский, это: используется нулевой макет правильно в данном конкретном контексте? Я не нашел никакой замены для этого, потому что я добавляю свой компонент в конец строки, и эта задача должна быть выполнена в методе paintComponent
.
Благодарим вас за советы.
Плохая вещь о nulllayout, заключается в том, что вы устанавливаете точное количество пикселей. Это будет отлично смотреться на вашем экране, без сомнения, но что, если у пользователя есть либо более старый экран с гораздо меньшим разрешением? Экран станет слишком большим для экрана. А как насчет парня, который купил последнюю из последних? В его случае экран будет слишком мал для чтения. – Stultuske
* ".. потому что я добавляю свой компонент в конец строки, и эта задача должна выполняться методом paintComponent." * Добавление компонентов в метод 'paint .. (Graphics)' вызовет 'repaint()', который вызовет вызов 'paint .. (Graphics)', который вызовет .. –
Лучшим подходом в этом случае может быть ** пользовательский макет **. BTW - какие компоненты и как пользователю нужно взаимодействовать с ними? –