Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы SpringLayout, Непонятно с пружинами 
:(
    Опции темы
armixx
Дата 19.9.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Всем добрый день.
Решаю задачу:
Надо расположить JTextArea с равномерными отступами слева, справа и сверху от краёв фрейма,  под ним JButton, расположенный в центре, с равномерным отступом от JTextArea и нижнего края фрейма.
Мне показалось, что наиболее удобным для этого является SpringLayout. Сделал так:

.....
      sl=new SpringLayout();
      Container cp=getContentPane();
      cp.setLayout(sl);
      jS=new JScrollPane();
      jB=new JButton("Завершить");
      jB.addActionListener(new ActionListener() {...});
      jB.setPreferredSize(new Dimension(140,20));
      m_Text=new JTextArea(); int tw=r.width-20,th=r.height-100;
      m_Text.setEditable(false); m_Text.setFocusable(false);
      m_Text.setBackground(getBackground());
      jS.getViewport().add(m_Text,null);
      jS.setPreferredSize(new Dimension(tw,th));
      jS.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
      jS.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      cp.add(jS); cp.add(jB);

      Spring strut=Spring.constant(10);
      Spring sprin=Spring.constant(0,100,10000);
      sl.putConstraint(SpringLayout.WEST,jS,strut,SpringLayout.WEST,cp);
      sl.putConstraint(SpringLayout.EAST,jS,strut,SpringLayout.EAST,cp);
      sl.putConstraint(SpringLayout.NORTH,jS,strut,SpringLayout.NORTH,cp);
      sl.putConstraint(SpringLayout.SOUTH,jS,strut,SpringLayout.NORTH,jB);
      sl.putConstraint(SpringLayout.SOUTH,jB,strut,SpringLayout.SOUTH,cp);
......
Имею отступ JTextArea от левого и верхнего краёв фрейма. На правом крае видна только половинка вертикального JScrollPane.  Горизонтальный JScrollPane плотно примыкает к нижнему краю. Кнопки вообще не видно.
Скорее всего, я неправильно понимаю смысл "пружин" и "распорок".  


PM MAIL   Вверх
aleksandy
Дата 19.9.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 1
Всего: 5



Цитата(armixx @  19.9.2010,  11:53 Найти цитируемый пост)
Мне показалось, что наиболее удобным для этого является SpringLayout.

Самым удобным, я думаю, будет BorderLayout() в главном контейнере. JTextArea добавляешь в центр, предварительно выставив ему необходимые Insets. На юг всавляешь панельку с FlowLayout(FlowLayout.CENTER). Для южной панельки тоже выставляешь Insets.
PM   Вверх
armixx
Дата 19.9.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Спасибо.
Для моей задачи подошёл BoxLayout. Очень удобненько и без проблем. Если интересно, то вот код:
Container cp=getContentPane();
JScrollPane jS=...;
JButton jB=...;
.....      
      Box bh=Box.createHorizontalBox();
      bh.add(Box.createHorizontalStrut(10));
      bh.add(jS);
      bh.add(Box.createHorizontalStrut(10));
      BoxLayout boxy=new BoxLayout(cp,BoxLayout.Y_AXIS);
      cp.setLayout(boxy);
      cp.add(Box.createVerticalStrut(5));
      cp.add(bh);
      cp.add(Box.createVerticalStrut(5));
      cp.add(jB);
       cp.add(Box.createVerticalStrut(5));
.....
Со Springом решил не возиться.
Для серьёзных компоновок я в дизайнере NetBeansа использую FreeLayout (ещё та штучка),
а для "ручных" подумывал Spring освоить, но ну его на фиг.
А вот Box действительно и эластичный и удобный.
PM MAIL   Вверх
Skynin
Дата 19.9.2010, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Вот чего не пойму, так это мужественных мучений с штатными лайот манагерами.

Нет чтобы MiG layout или JGoodies, не, надо мучится, страдать, а в итоге то что? Какие сверх мудреные интерфейсы?

Цитата

Для серьёзных компоновок я в дизайнере NetBeansа использую FreeLayout (ещё та штучка)

Там лучше использовать GroupLayout

Это сообщение отредактировал(а) Skynin - 19.9.2010, 23:05
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
Skipy
Дата 20.9.2010, 10:01 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



Цитата
Вот чего не пойму, так это мужественных мучений с штатными лайот манагерами.


Мучается тот, кто их не понимает. Я могу написать любой интерфейс безо всяких мучений

Цитата
Нет чтобы MiG layout или JGoodies


Имхо, JGoodies более мудреный, чем GBL. И зачем мне еще одна зависимость?


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Skynin
Дата 20.9.2010, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Цитата

Я могу написать любой интерфейс безо всяких мучений

И я могу.
А самое главное - а с какими усилиями придется изменять этот "любой интерфейс"?

Цитата

И зачем мне еще одна зависимость? 

Мне как-то встречаются программы на Java у которых десятки библиотек в папочке libs

Но конечно, можно изобретать велосипеды, и писать все самому.

Время работы программиста - главная часть себестоимости продукта. А не - "у моей программы на одну зависимость меньше". Да пусть их на 20 штук больше будет, если ты напишешь/модифицируешь работающий код за неделю а не за месяц
Но, дело работодателя конечно.
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
Skipy
Дата 20.9.2010, 15:42 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 4
Всего: 16



Цитата
А самое главное - а с какими усилиями придется изменять этот "любой интерфейс"?


С теми же, с какими и писать. Легко и непринужденно.

Цитата
Мне как-то встречаются программы на Java у которых десятки библиотек в папочке libs


Мне тоже встречаются. А потом оказывается, что библиотека на 2Мб подтянута ради одного класса, который можно написать за 10 минут. А эту библиотеку еще найти надо было. Я встречал подключение commons-io, кажется, ради единственного метода FileUtils - чтение текстового файла по строкам. У меня этот код занимает меньше 10 строк и пишется за две минуты практически вслепую.

Цитата
Но конечно, можно изобретать велосипеды, и писать все самому.


Можно. В особенности велосипеды любят разрабатывать те, кто не понимает, как работают стандартные раскладки.

Цитата
Время работы программиста - главная часть себестоимости продукта. А не - "у моей программы на одну зависимость меньше".


В основном так. Только вот сюда входит и поддержка. Что будете делать, если обнаруживается ошибка в сторонней библиотеке? А времени на исправление ситуации у Вас - день, дальше начинаются штрафные санкции.

А иногда еще оказывается, что из-за неудачной зависимости, на которую прочно завязались, приходится переписать половину приложения. Взяли библиотеку версии 2.0, в версии 3.0 она пошла категорически не туда (= непригодна к использованию), 2.0 не поддерживается. Баги не исправляются. Брать код, разбираться и продолжать разрабатывать самим? А если его нет? Убить кучу времени на переход на что-то новое?

Цитата
Да пусть их на 20 штук больше будет, если ты напишешь/модифицируешь работающий код за неделю а не за месяц


Спешка хороша при ловле блох. Чем больше сторонних зависимостей - тем меньше Вы контролируете приложение. У нас один заказчик на КАЖДУЮ библиотеку требовал предоставления информации о ее производителе, поддержке, тестировании, количестве багов и т.п. И обоснование, почему мы используем именно стороннюю библиотеку, а не пишем это сами. И по большому счету он прав. Потому что когда в production-режиме вылезет ошибка, которая парализует работу банка по всей стране - заказчик потеряет огромные деньги. И вывернет поставщика наизнанку. И в этом случае никого не будут волновать три сэкономленные недели. А волновать будет одно - как в production пошел код, содержащий ошибки. 

P.S. А Вы никогда не встречались с ограничением "объем клиентского приложения не должен превышать 10Мб"? И что Вы будете делать в этом случае с 20 дополнительными зависимостями?


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Skynin
Дата 26.9.2010, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: нет
Всего: 10



Цитата

С теми же, с какими и писать. Легко и непринужденно.

С "детства" слышал это от - опытных ассемблирщиков, в спорах с Сишниками. От отпытных Сишников, в спорах с С++сниками и т.д.

Цитата
А потом оказывается, что библиотека на 2Мб подтянута ради одного класса, который можно написать за 10 минут.

А потом оказывается что что в новой версии и этот класс не используется, а библиотека в поставку входит.
У Вас есть статистика по ПО на Java чтобы брать за аргумент - "подтянута ради одного класса"?

Цитата
В особенности велосипеды любят разрабатывать те, кто не понимает, как работают стандартные раскладки.

Или находящиеся в перманентном ужасе от обилия инструментов и проблемы выбора.

Цитата
Только вот сюда входит и поддержка. Что будете делать, если обнаруживается ошибка в сторонней библиотеке?

В КАКОЙ библиотеке? Мы говорим о библиотеках раскладки. Будете настаивать что вероятность ошибки  в них такая же, как в библиотеке какой-нить встраиваемой OODB или "SwingX"?

Цитата
А времени на исправление ситуации у Вас - день, дальше начинаются штрафные санкции.

А если ошибка в Вашей собственной библиотеке, написанной год тому, а времени у Вас - час, а дальше расстрел?

Цитата
А иногда еще оказывается, что из-за неудачной зависимости, на которую прочно завязались, приходится переписать половину приложения.

И каков же размер приложения, что половину - 1000 строк?
И опять - какова вероятность этого "иногда" в конкретном случае - библиотека раскладок?

Цитата
Брать код, разбираться и продолжать разрабатывать самим? А если его нет?

А если голова у программистов оказывается только видимость? Увольнять и искать новых? А сроки то, неделя!

Про наличие кода всегда думать нужно - ЗАРАНЕЕ.

Цитата
Спешка хороша при ловле блох. Чем больше сторонних зависимостей - тем меньше Вы контролируете приложение.

Самоуверен тот, кто думает что если он написал свое приложение, то он его хорошо контролирует.

Насчет же спешки - если клиент присажен на твое ПО, то конечно можно и не спешить.

Цитата
У нас один заказчик на КАЖДУЮ библиотеку требовал

Вы опытный программист. Ну что, ей Богу за обилие в аргументации - иногда, "у нас один", и т.д.?

Цитата
заказчик потеряет огромные деньги

А если писать ПО для атомных станций, то еще и человеческие жизни может заказчик потерять.

Не надо впадать в крайности от этих ужасов.

Цитата
А Вы никогда не встречались с ограничением "объем клиентского приложения не должен превышать 10Мб"?

Встречался. Только оно обычно в действительности означает:
Приложение хранится на сервере
Старт приложения должен выполняться за не более чем ... сек
Скорость канала может быть ... Кб/с

А это, согласитесь другие требования, которые да, можно реализовать с помощью "объем клиентского приложения не должен превышать 10Мб"

Еще мне Ваш пост напомнил одну главу из "Зри в корень" Маковецкого:
"Взвешивание яблока"
А Вы учли испарения жидкости и реактивный момент этого?
А притяжение Сатурна? 
А ...
А ...
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0808 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.