2016-05-20 5 views
0

Предположим, у меня есть JPanel с GridBagLayout так:GridBagLayout и весов Перекрытие Компоненты

----------------------------------------------- 
|  |    |    |  | 
|  |Left JLabel 1 | Right JLabel 1|  | 
|  |    |    |  | 
|-glue-|Left JLabel 2 | Right JLabel 2|-glue-| 
|  |    |    |  | 
|  |   Bottom JLabel   |  | 
|  |    |    |  | 
|    vertical glue    | 
----------------------------------------------- 

Левый/правый метки каждого пролета 1 строк и 1 столбцов, в то время как нижняя этикетка охватывает 1 строку и 2 столбца. Горизонтальные клеи с обеих сторон охватывают 3 строки и по 1 колонке. Вертикальный клей на дне охватывает 1 ряд и 4 колонны.

Каждая из этикеток имеет weighty от 1.0. Кроме того, клей с обеих сторон также имеет weighty от 1.0. Вертикальный клей имеет weighty1.5. В настоящее время, когда я изменяю размер панели в направлении y, вертикальный клей получает приблизительно 3/5 свободного пространства, а вся верхняя часть получает приблизительно 2/5 свободного пространства.

Вопрос: как работает вес, когда клей накладывается (если смотреть с y - перспектива) с кнопками? Без клея общий вес кнопок был бы 3.0: это совершенно другой вариант изменения размера! Как рассчитывается вес (наивысший, средний, «вид с точки зрения размера»,?) И используется?

ответ

2

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

Я думаю, вы получаете что-то вроде:

  1. «вертикали клей» считается один ряд данных, так что получает 1.5.
  2. Компоненты «клей» рассматривают другую строку данных, чтобы получить 1.0.
  3. Затем в компонентах «клей» есть еще 3 строки данных, и каждый из них получает 0,33 пространства, выделенного для компонентов «клей».
+0

Благодарим вас за ответ на мой вопрос, но «кто точно знает, что происходит»: кто действительно это делает? Существуют ли на Java разработчики Java-языков? :) Кроме того, пример, который я дал в моем вопросе, довольно прост, но что, если клей и кнопки частично перекрываются? Что делать, если несколько столбцов перекрываются в разной степени? – shardulc

+0

'но что, если клей и кнопки частично перекрываются?' - то есть было бы еще сложнее. Я всегда предлагаю использовать вложенные панели с соответствующим макетом компоновки вместо того, чтобы пытаться создать макет с одним менеджером макета. – camickr

Смежные вопросы