Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.31.209] |
|
Сообщ.
#1
,
|
|
|
Есть pane1 и pane2
Хочется разметить их на апплете следующим образом - pane1 над pane2, при этом pane2 имеет фиксированную высоту. Высота и ширина pane1, ширина pane2 должны выбираться автоматом так, что бы эти два пана занимали весь апплет. Можете показать готовый код? Я понимаю, что все это элементарно находится, но на http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html много написано и толком не получается что нужно. |
Сообщ.
#2
,
|
|
|
Решение у вашей задачки не одно. Наиболее простое - BorderLayout, при этом верхней пенли устанавливается preferredSize:
container.setLayout( new BorderLayout() ); panel1.setPreferredSize( new Dimension(0, fixed_height_value) // ширину компонента устанавливать бесполезно, т. к. BorderLayout всё равно его растянет ); container.add(panel1, BorderLayout.NORTH); container.add(panel2, BorderLayout.CENTER); |
Сообщ.
#3
,
|
|
|
Спасибо
Еще вопрос Если у нас класс A вложен в класс B. Как из метода класса A получить ссылку на экземпляр класса B? И еще, как обновить layout, после того как в pane Добавились новые элементы? Потому что по факту оно обновляется только после ресайзинга |
Сообщ.
#4
,
|
|
|
Цитата ANDLL @ И еще, как обновить layout, после того как в pane Добавились новые элементы? Потому что по факту оно обновляется только после ресайзинга Попробуй pack(), либо repaint(). Цитата ANDLL @ Если у нас класс A вложен в класс B. Как из метода класса A получить ссылку на экземпляр класса B? Если класс A является внутренним по отношению к B, то это ничего не говорит об отношениях между экземплярами классов. Если ты в своем объекте класса B делаешь A a = new A() - вот тебе и ссылка. Если нет - тогда объект A вообще не будет создан. |
Сообщ.
#5
,
|
|
|
Цитата batigoal @ Отнюдь - из внтруннего класса можно вызвать любой метод внешнего класса. Причем нестатический метод. А как получить собственно экземпляр? Если класс A является внутренним по отношению к B, то это ничего не говорит об отношениях между экземплярами классов Добавлено Цитата batigoal @ Эмм, у Applet нету метода pack. repaint не помог Попробуй pack(), либо repaint(). |
Сообщ.
#6
,
|
|
|
Цитата ANDLL @ Отнюдь - из внтруннего класса можно вызвать любой метод внешнего класса. Причем нестатический метод. А как получить собственно экземпляр? Пардон, перепутал местами A и B. Получить его можно через B.this: public class InternalTest { public static void main(String[] args) { A a = new A(); } } class A { String field = "field A"; A() { B b = new B(); b.someBMethod(); } public void someAMethod() { System.out.println("A :: someAMethod()"); } class B { public void someBMethod() { System.out.println("B :: someBMethod()"); System.out.println(A.this.field); } } } |
Сообщ.
#7
,
|
|
|
Цитата batigoal @ Точно, спасибо огромное!Получить его можно через B.this: А как обновить, идеи есть? |
Сообщ.
#8
,
|
|
|
Цитата ANDLL @ Эмм, у Applet нету метода pack. repaint не помог Еще есть validate() - может, он спасет. |
Сообщ.
#9
,
|
|
|
Еще вопросец.
У меня есть JTree DefaultTreeModel treeModel=new DefaultTreeModel(node); t=new EditingTree(treeModel);//EditingTree extends JTree t.addTreeSelectionListener(new TreeSelectionListener(){ @Override public void valueChanged(TreeSelectionEvent e) { e.getNewLeadSelectionPath(); } }); |
Сообщ.
#10
,
|
|
|
Спасибо, разрешилось
|
Сообщ.
#11
,
|
|
|
На будущее:
Цитата Правила 3. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос. |
Сообщ.
#12
,
|
|
|
Цитата ANDLL @ И еще, как обновить layout, после того как в pane Добавились новые элементы? revalidate(); repaint(); |