GridBag Layout – більш гнучке табличне розташування

А зараз я покажу ще один спосіб створення вікна калькулятора Тут буде використовуватися javaawtGridBagLayout замість комбінації схем і панелей У нашому калькуляторі є рядки і стовпці, але в GridLayout оніобязани мати однакові розміри Це не підходить, так як у нас є поле для введення, ширина якого дорівнює ширині трьох кнопок з чісламіGridBagLayout – більше просунута схема розміщення Вона дозволяє задавати розмір комірки, рівним декільком клітинам таблиці GridBagLayout має допоміжний клас, який називається GridBagConstraints (Обмеження на клітини таблиці) Ці обмеження не що інше, як атрибути осередків, які необхідно задавати для кожного осередку таблиці окремо Всі обмеження мають бути заданідо того, як в осередок поміщаються компоненти Наприклад, один з атрибутів GridBagConstraints називається gridWidth Він дозволяє задати ширину який – то одного осередку, рівний ширині декількох другихВ час роботи з GridBagLayout необхідно спочатку створити екземпляр класу GridBagConstraints, і потім задати значення для його властивостей Після того як це зроблено, можна додавати обєкт в клітинку контейнера

Наступний приклад коду, усипаний коментарями, які допоможуть зрозуміти, як використовувати GridBagLayout / / Задаємо GridBagLayout для панелі вікна GridBagLayout gb = new GridBagLayout() thissetLayout(gb)

/ / Створюємо екземпляр класу GridBagConstraints

/ / Ці рядки коду потрібно повторити для кожної компоненти

/ / Яка додається в клітинку

GridBagConstraints constr = new GridBagConstraints()

/ / Задаємо обмеження для рядка введення калькулятора

/ / Координата x в таблиці

constrx=0

/ / Координата y в таблиці

constry=0

/ / Ця комірка має таку ж висоту, як стандартні осередки

constrgridheight =1

/ / Ця комірка має ширину рівну ширині 6 стандартних осередків

constrgridwidth= 6

/ / Заповнюємо весь простір осередку

constrfill= constrBOTH

/ / Пропорція по горизонталі, яку буде заніматькомпонент

constrweightx = 10

/ / Пропорція по вертикалі, яку займатиме компонент

constrweighty = 10

/ / Позиція компонента всередині осередку

constranchor=constrCENTER

displayField = new JTextField()

/ / Встановлюємо обмеження для поля введення

gbsetConstraints(displayField,constr)

/ / Додаємо поле введення у вікно

windowContentadd(displayField)

CardLayout – колода карт

Уявіть колоду карт, в якій карти лежать сорочкою вниз так, що ви можете бачити тільки верхню карту Схема javaawtCardLayout може бути іспользованa, якщо необхідно створити компонент, який виглядає, як папка з вкладками

При натисканні на вкладку вміст екрану змінюється Насправді, всі панелі, необхідні для цього вікна, вже попередньо завантажені і лежать один на одному Коли користувач клацає по вкладці, програма просто переносить цю вкладку наверх і робить вміст інших вкладок невідімиміСкорее все, ви не будете використовувати цю схему, тому що бібліотека Swing включає готовий компонент для вікон з вкладками Він називається JTabbedPane

Чи можна створювати вікна, не використовуючи схеми

Звичайно, можна Ніщо не заважає явно задавати координати кожного компонентa при додаванні на вікно Для цього клас повинен чітко вказати, що він не використовує схеми розміщення У Java є спеціальне слово null, яке означає значення не задано. Ми будемо використовувати це ключове слово досить часто в майбутньому, і в наступному прикладі воно означає, що ніяка схема не використовується:

windowContentsetLayout(null)

Але, якщо відмовитися від схем, то необхідно призначити координати лівого верхнього кута, ширину і висоту кожного віконного компонента У наступному прикладі показано, як можна встановити ширину кнопки в 40 пікселів, висоту в 20, і розмістити її на 100 пікселів вправо і 200 пікселів вниз від верхнього лівого кута вікна:

JButton myButton = new Button(&quotNew Game&quot)

myButtonsetBounds(100,200,40,20)

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*