frame.add( new JLabel(new ImageIcon(new URL(ICON_URL))), new GridBagConstraints( 0, 0, 1, 4, 0.0, 0.0, GridBagConstraints.SOUTH, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JLabel("jLabel1"), new GridBagConstraints( 1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JTextField("jTextField1",10), new GridBagConstraints( 2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JButton( "..." ), new GridBagConstraints( 3, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JLabel("jLabel2"), new GridBagConstraints( 1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JTextField("jTextField2",10), new GridBagConstraints( 2, 1, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JLabel("jLabel3"), new GridBagConstraints( 1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JPasswordField("jTextField3",10), new GridBagConstraints( 2, 2, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
frame.add( new JButton("jButton1"), new GridBagConstraints( 2, 3, 2, 1, 0.0, 1.0, GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0 ) );
Результат:
Заняло времени пару минут. При этом универсально, гибко, кроссплатформенно. Можно чуть подправить Insets для щелей между компонентами, а также размер button итд… Выглядит шибко длинно, но это самый длинный и универсальный способ применённый в самом сыром виде. Можно обернуть сверху в конструктор с меньшим кол-вом параметров, если есть какие-то закономертности в вашем GUI. Или отнаследовать и видоизменить поведение по дефолту. У нас, например, в GridBag вычисляются insets автоматом, не используются ipadx, ipady итд итп.
Понимаете, очевидно, что при изобретении велосипедов действует презумпция ненужности. Не ВАМ должны доказывать, что существующие способы лучше, а ВЫ должны показать ЧЕМ вам способ удобнее и интереснее (особенно в общем случае). А на деле у вас получается такая же длиннющая портянка кода, со всеми своими непонятностями и недостатками. Она вам кажется понятнее и удобнее, это ясно. И даже, вероятно, в некоторых случаях она себя оправдает своим (как модно говорить, «функциональным») подходом. Но я не вижу ни одной реальной посылки его использовать, хотя я по-честному обдумал ваш способ и постарался разобраться в том, что вы написали.
Это ужасно. Ужасно неудобно, нечитаемо и неподдерживаемо, имхо. Даже по сравнению с длиннющими портянками GridBag-конструкторов. Не вижу ни одного преимущества перед классическими layout-ами, при том, что явные недостатки (описанные выше) налицо, особенно про «поплывёт», от чего layout-ы, собственно, призваны спасать. В вашем же случае получается по факту реально то же самое, только надо в голове разруливать зависимости расположений элементов относительно друг друга, да ещё и в абсолютных значениях каких-то.
Если кто-то считает что знает компоновщик позволяющий для такой небольшой формы сделать более простой и читабельный код (см. текст исходника)
Лично я не считаю это простым и читабельным кодом. Потому, что код для описания раскладки не должен быть таким. ИМХО, опять же. А вообще, это просто субъективные вещи всё. Вам не нравится как выглядит работа с классическими layout-ами и вы написали велосипед. Больше нет причин искать подобные альтернативы) А мне механизм лаяутов в java очень нравится удобством и гибкостью.
Так не надо входить с низких порогов) Надо и так и эдак уметь делать. Можно и знать сложные вещи и умело применять IDE и frameworks. Одно другому не мешает, в общем-то, а как раз дополняет. Понятно, что если человека посадить сразу за стратс с хибернейтом, то это сделает его хм… несколько «тупым» в java-разработке, да, пожалуй. Но никто не не подразумевает, что человек должен на этом зациклиться и не копаться в java core. В идеале начинать надо, разумеется, в обратном направлении.
Хороших разработчиков тупыми не сделает, а плохих уже ничего не спасёт. И так понятно, без разных там «наблюдений», что как-либо эффективно пользоваться фреймворком без знания core и прочих основ никак нельзя. Но говорить, что фреймворки «делают тупыми» тоже не вполне корректно. Знать как пользоваться командной строкой компилятора (в данном случае речь о java в том числе) и уметь написать и собрать в «блокноте» приложение — без сомнения необходимое умение, но нельзя же сказать при этом, что IDE делают тупыми? :)
Ну а причём тут .NET то, действительно. Во многих стандартных библиотеках оно есть, если есть коллекции — то и Set/HashSet есть. Например, в Java с незапамятных времён, ну и т.д.
Да, в школе СТО точно преподаётся. Ясно понятно, в самом поверхностном и описательном виде, но всё же. ОТО в универе был, мельком, ну и в аспирантуре тоже было.
Ну, по идее помогает (квантовая телепортация), но там в дополнение должен присутствовать всё тот же обычный канал связи, который сейчас тут и выдумывается)
Заняло времени пару минут. При этом универсально, гибко, кроссплатформенно. Можно чуть подправить Insets для щелей между компонентами, а также размер button итд… Выглядит шибко длинно, но это самый длинный и универсальный способ применённый в самом сыром виде. Можно обернуть сверху в конструктор с меньшим кол-вом параметров, если есть какие-то закономертности в вашем GUI. Или отнаследовать и видоизменить поведение по дефолту. У нас, например, в GridBag вычисляются insets автоматом, не используются ipadx, ipady итд итп.
Лично я не считаю это простым и читабельным кодом. Потому, что код для описания раскладки не должен быть таким. ИМХО, опять же. А вообще, это просто субъективные вещи всё. Вам не нравится как выглядит работа с классическими layout-ами и вы написали велосипед. Больше нет причин искать подобные альтернативы) А мне механизм лаяутов в java очень нравится удобством и гибкостью.
А вообще в целом — что-то в этом есть, да, но в итоге кода ненамного меньше выходит по прикидкам, имхо.
сановскаяоракловская)