Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Правильный подход к проектированию интерфейсов?


Автор: Killer_13 15.7.2011, 13:14
По моим нескольким темам видно, что я сейчас борюсь с ЛейоутМенеджерами при постройке интерфейса.
Хочу задать вопрос на счет логики построения. Правильно ли я понимаю?!
Например строим форму в ней мне хочется все окно разбить тремя панелями в ряд. тогда я на например на JFrame ставлю FlowLayout, потом в одной панели добавляю 50 кнопок сверху вниз, для этой панели добавляю BoxLayout с Y_AXIS, в другой панели хочу по своему разместить еще несколько панелей и в них тоже элементы, тогда например беру для второй панели GraidBagLayout и так д....
Правильно я это понимаю?
А чтоб компоненты были нужной мне высоты и ширины обязательно для каждого компонента писать setPreferredSize,setMinimumSize? Можно так - сделал панель необходимых размеров - бросил туда компонент и он занял всю рабочую область панели?
Спасибо.

Автор: dorogoyIV 15.7.2011, 14:05
Цитата(Killer_13 @  15.7.2011,  13:14 Найти цитируемый пост)
Можно так - сделал панель необходимых размеров - бросил туда компонент и он занял всю рабочую область панели?

можно
Код

JPanel newPanel = new JPanel(new BorderLayout());
newPanel.add(new killer_13_Component());
add(newPanel);


вообще то много нюансов...
потренируешься, разберешься...  smile 

Автор: Killer_13 15.7.2011, 14:19
Ой, как вы мне здорово помогли, простая вещь, у меня почему то сразу сложилось впечатление, что BorderLayout разбивает всегда на 5 частей, блин, я не дочитал, что если один компонент, то он так делает, теперь уже просветляется, уже помаленьку раскладываю по полочкам, за буду оптимизировать код. smile Спасибоооо.
А как на счет вопроса? Я понимаю, что много нюансов, но подход такой правильный? smile

Автор: dorogoyIV 15.7.2011, 15:18
Цитата(Killer_13 @  15.7.2011,  14:19 Найти цитируемый пост)
А как на счет вопроса?

я бы посоветовал хорошенько изучить BorderLayout and FlowLayout, и пока не лезть в навороченные менеджеры (этих двух вполне хватает...)

Автор: dorogoyIV 15.7.2011, 19:52
Цитата(Killer_13 @  15.7.2011,  14:19 Найти цитируемый пост)
но подход такой правильный?

тут по моему - твори все, что, хочешь
layoutmeneger загрузится во время запуска приложения, потом в памяти будет висеть его слушатель (...Listener), так, что, ресурсов много не сожрет...

Автор: COVD 16.7.2011, 06:03
Killer, а вы осваиваете лэйауты вручную? 10-ю пальцами по клавиатуре? Я намекаю на альтернативу - дизайнер интерфейсов. Например, в Нетбинс. Поставили лэйаут и сразу посмотрели его поведение. Использование дизайнеров и есть "Правильный подход к проектированию интерфейсов". Использование дизайнера приводит к созданию большого количества вложенных панелей. И действительно можно ограничиниться малым количеством лейаутов. Получается избыточно (кода), но код генерит компьютер.
 

Автор: Killer_13 16.7.2011, 10:03
Да, я осваиваю "лэйауты" вручную, 10 пальцами. smile Раньше пользовался НетБинсом, сейчас спрыгнул на Еклипс. Во первых не люблю когда не знаю что за код в программе, тоисть когда дизайнер сам генерирует код. Во вторых, принцип то понятен, осталось несколько раз закодить, а если начну с дизайнера интерфейсов, то скорее всего у меня не будет понимания. А так, уже можно сказать разобрался с Border,Flow,Spring,BoxLayots-ами. Еще нужно потренироваться с выравниванием BoxLay. Несколько раз вперемешку и тот и другой по использовал и все, тем более есть книги, статьи. Ну помучился денек другой, ну заспамил чуток форумы своими вопросами, зато сейчас чувствую результат, в голове выстраивается картинка с помощью которого Лейоута лучше собирать в кучку элементы интерфейса.

Автор: dorogoyIV 16.7.2011, 10:22
осталось самому свой написать...

на форуме где то видел CircleLayout (компоненты расположены по окружности)

мне когда то такой нужен был:
http://forum.vingrad.ru/index.php?showtopic=229000&view=findpost&p=1645574

Автор: COVD 16.7.2011, 22:07
Цитата

Использование дизайнеров и есть "Правильный подход к проектированию интерфейсов". 


Сам себя поправлю. smile  

Подходов - два. И оба правильные. 

Один подход - вручную. Получается компактный код, минимум панелей. Но требуется виртуозное владение лэйаутами. Возможно применение экзотических лэйаутов или самописных. 
Второй - использование дизайнера. Получается много вложенных панелей, простые лэйауты. Сгенерированный код состоит из большого числа стандартных конструкций. Смотреть его не интересно и редактировать невозможно.

Первый подход - для специализирующихся на GUI или претендующих на создание уникального интерфейса. 
Второй подход - "индустриальный", для быстрого создания интерфейсов стандартного качества и вида, для тех, кто работает с интерфейсами редко.   

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)