К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Вопрос по Java

Гость
0 - 21.08.2012 - 10:09
На основной форме есть JPanel2.В нее спомощью метода add добавляется frm1 на которой находятся несколько JButton. Когда начинаешь изменять мышкой размеры JPanel2,то JButton остаются прижатыми влево, а должны следовать за нижним краем JPanel2 и одновременно перемещаться к правому краю формы.Вот код.Разработка ведется на NetBeans 7.2 и при тестировании формы frm1 в визуальном редакторе форм JButton перемещаются правильно.В чем проблема?

jPanel2.setLayout(new FlowLayout(FlowLayout.LEFT));
Form1 frm1 = new Form1();
jPanel2.add(frm1);



1 - 21.08.2012 - 11:07
Ну тут тебе надо использовать несколько манагеров, сначала использовать BorderLayout (он по умолчанию) и новую панель добавлять в него на юг, а в этой новой панели уже использовать FlowLayout и выравниваем по правому краю. Тобишь примерно так:

JFrame myFrame = new JFrame();
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);
myFrame.setSize(200, 90);
JPanel myPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
myPanel.add(new JButton("Test"));
myFrame.add(myPanel, BorderLayout.SOUTH);
myFrame.setVisible(true);
Гость
2 - 22.08.2012 - 18:15
Спасибо за пример,но он несколько не в тему.Наверное я не совсем корректно описал проблему. Мне надо одну панель вставить в другую и при этом JButton должны следовать за нижним краем JPanel2 и одновременно перемещаться к правому краю формы.
3 - 23.08.2012 - 03:43
2-coder73 > Может быть действительно что-то недоговариваешь...
На первой панели ставишь манагер BorderLayout, вторую панель добавляешь в первую в нижний край (у бордера она называется SOUTH), и при изменении вторая панель всегда будет нижнюю часть занимать, а во второй панели уже FlowLayout с выравниванием по нужному краю ,кстати в вопросе говоришь "к правому краю", а в топике используешь FlowLayout.LEFT, это понятно по левому выравнивание, вот тот же пример применительно к панелям:

JPanel jpanFirst = new JPanel(new BorderLayout());
JPanel jpanSecond = new JPanel(new FlowLayout(FlowLayout.RIGHT));
jpanSecond.add(new JButton("Test"));
jpanFirst.add(jpanSecond, BorderLayout.SOUTH);

Однозначно будет по нижнему краю и прижиматься вправо.
Хотя может что-то я в вопросе и не понимаю
4 - 23.08.2012 - 03:48
3-Sserj > Или вполне вероятно если тебе надо именно в jpanSecond задать такое поведение то просто jpanSecond можно сделать из двух панелей, jpanSecond с BorderLayout и и вложить третью в нее с FlowLayout, типа такого:

JPanel jpanFirst = new JPanel();
JPanel jpanSecond = new JPanel(new BorderLayout());
JPanel jpanThird = new JPanel(new FlowLayout(FlowLayout.RIGHT));
jpanThird.add(new JButton("Test"));
jpanSecond.add(jpanThird, BorderLayout.SOUTH);
jpanFirst.add(jpanSecond);

Вообщем формы на свинге обычно очень слоёные бутрброды получаются, хотя при достаточной сноровке тырфейс можно нарисовать любой :)
5 - 23.08.2012 - 04:24
4-Sserj > Ну или разобраться со SpringLayout - ом и использовать его, с ним можно сделать вообще что угодно, но меня он просто как то напрягает.
Гость
6 - 23.08.2012 - 16:07
Спасибо за примеры,сейчас разбираюсь с визуальным дизайнером NetBeans.Я с Java, только начал разбираться.Раньше писал на C++,C#. Скажи Sserj,а какие бесплатные генераторы отчетов можно использовать в Java?
7 - 24.08.2012 - 05:03
6-coder73 > Про отчеты не могу много сказать, у меня специализация другая, но напарник подсказал что для нетбинса лучше пользовать JasperReports. Секундный поиск выдал:
http://ru.wikipedia.org/wiki/JasperReports

А может и не лучше, может это просто единственное что он знает, так как других тоже не назвал :)
Гость
8 - 24.08.2012 - 20:48
Спасибо Sserj!


К списку вопросов






Copyright ©, Все права защищены