3966

Пакет Swing компонувальники LayoutManager

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота (Пакет Swing – компонувальники (LayoutManager)) Тема роботи: Пакет Swing – компонувальники (LayoutManager). Мета роботи: Дослідити роботу, одного з компонентів пакету Swing, компонувальники (LayoutManager). План ро...

Украинкский

2012-11-10

379.45 KB

5 чел.

8.

Лабораторна робота №8 (Пакет Swing – компонувальники

(LayoutManager))

Тема роботи: Пакет Swing – компонувальники (LayoutManager).

Мета роботи: Дослідити роботу, одного з компонентів пакету Swing, компонувальники

(LayoutManager).

План роботи

1. Ознамитися з LayoutManager.

2. Дослідити роботу компонувальників: FlowLayout, BorderLayout, CardLayout, BoxLayout,

GridLayout.

3. Навчитися добавляти компонувальники до контейнерів.

4. Навчитися задавати параметри компонувальників.

5. Вивчити властивості кожного компонувальника.

Теоретичні відомості

LayoutManager – це об’єкт, котрий визначає розміри та розташування компонентів в

межах контейнера. Хоча компоненти самі визначають свої розміри та вирівнювання, останнє

слово стосовно їх розташування належить компонувальнику контейнера. Задати компонувальник

можна використовуючи конструктор JPanel.

Наприклад:

JPanel panel = new JPanel(new BorderLayout());

Можна задати компонувальник після того як контейнер створено.

Наприклад:

Container contentPane = frame.getContentPane();

contentPane.setLayout(new FlowLayout());

Хоча рекомендується використовувати layout managers, можна створити

контейнер і встановити layout managers null. В цьому випадку ми використовуємо

абсолютне позиціонування, тобто ми повинні безпосередньо задати розміри та

розташування компонентів в межах контейнера. Недолік даного підходу в тому, що

компоненти не будуть коректно вирівняні коли розміри контейнеру змінюються.

Компоновульник FlowLayout.

Компонувальник FlowLayout надає найпростіший спосіб розташування

компонентів. Цей компонувальник є компонувальником по-замовчуванню для JPanel.

На малюнку показано приклад застосування даного компонувальника:

70


Приклад 1.

import javax.swing.*;

import java.awt.*;

public class Lab4 extends JFrame

{

public Lab4()

{

setTitle("FlowLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new FlowLayout());

contentPane.add(new JButton("Button 1"));

contentPane.add(new JButton("Button 2"));

contentPane.add(new JButton("Button 3"));

contentPane.add(new JButton("Long-Named Button 4"));

contentPane.add(new JButton("5"));

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Клас FlowLayout має три конструктори:

public FlowLayout()

public FlowLayout(int alignment)

public FlowLayout(int alignment, int horizontalGap, int verticalGap)

Аргумент alignment може бути FlowLayout.LEADING, FlowLayout.CENTER, or

FlowLayout.TRAILING. Якщо аргумент alignment дорівнює FlowLayout.LEADING –

компоненти будуть вирівнюватись по лівому краю, якщо FlowLayout.TRAILING - по

правому, якщо FlowLayout.CENTER – по центру (це значення по-замовчуванню).

Аргументи horizontalGap and verticalGap задають відстань між компонентами в пікселах.

Компонувальник BorderLayout

На малюнку показано розташування кнопок у випадку використання даного

компонувальника:

71


Приклад 2.

import javax.swing.*;

import java.awt.*;

public class Lab4 extends JFrame

{

public Lab4()

{

setTitle("BorderLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(new JButton("Button 1 - NORTH"), BorderLayout.NORTH);

contentPane.add(new JButton("Button 2 - SOUTH"), BorderLayout.SOUTH);

contentPane.add(new JButton("Button 3 - WEST"), BorderLayout.WEST);

contentPane.add(new JButton("Button 4 - EAST"), BorderLayout.EAST);

contentPane.add(new JButton("Button 5 - CENTER"), BorderLayout.CENTER);

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

72


Компонувальник CardLayout.

Даний компонувальник отримав свою назву по аналогії із колодою карт, коли

тільки верхня карта із цілої колоди є видимою. За власним бажанням ми можемо показати

будь-яку. Як правило до контейнера із CardLayout додаються інші об’єкти типу JPanel.

Приклад 3.

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class Lab4 extends JFrame

{

private CardLayout layoutCard;

private JCheckBox chboxSelect;

private JPanel pnlMain;

public Lab4()

{

setTitle("CardLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

chboxSelect = new JCheckBox("Select panel");

chboxSelect.addActionListener(new SelectPanel());

chboxSelect.setSelected(true);

contentPane.add(chboxSelect, BorderLayout.NORTH);

JPanel pnlFlow = new JPanel(new FlowLayout());

JPanel pnlBorder = new JPanel(new BorderLayout());

layoutCard = new CardLayout();

pnlMain = new JPanel(layoutCard);

contentPane.add(pnlMain, BorderLayout.CENTER);

pnlMain.add(pnlFlow, "FlowLayout");

pnlMain.add(pnlBorder, "BorderLayout");

pnlFlow.add(new JButton("Button 1"));

pnlFlow.add(new JButton("Button 2"));

pnlFlow.add(new JButton("Button 3"));

pnlFlow.add(new JButton("Long-Named Button 4"));

pnlFlow.add(new JButton("5"));

pnlBorder.add(new JButton("Button 1 - NORTH"), BorderLayout.NORTH);

73


pnlBorder.add(new JButton("Button 2 - SOUTH"), BorderLayout.SOUTH);

pnlBorder.add(new JButton("Button 3 - WEST"), BorderLayout.WEST);

pnlBorder.add(new JButton("Button 4 - EAST"), BorderLayout.EAST);

pnlBorder.add(new JButton("Button 5 - CENTER"), BorderLayout.CENTER);

}

class SelectPanel implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if (chboxSelect.isSelected())

layoutCard.show(pnlMain, "FlowLayout");

else

layoutCard.show(pnlMain, "BorderLayout");

}

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Результат виконання програми

На даному прикладі показані дві панелі, додані до панелі із компонувальником

CardLayout. Для того, щоб показати одну із панель – натисніть селектор (JCheckBox) із

написом “Select panel”.

Коли ми додаємо панелі до контейнера ми повинні задати стрічку, котра

ідентифікує дану панель. В даному прикладі ми додаємо першу панель із стрічкою

"FlowLayout", а другу – із "BorderLayout". Для того, щоб показати одну із панелей,

необхідно передати функції show() як аргумент стрічку, котра ідентифікує панель.

Компонувальник BoxLayout.

Цей компонувальник подібний до FlowLayout, але використовуючи його можна задавати

вісь, вздовж якої будуть додаватись компоненти.

Приклад 4.

import javax.swing.*;

import java.awt.*;

74


public class Lab4 extends JFrame

{

public Lab4()

{

setTitle("CardLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));

JButton button1 = new JButton("Button 1");

contentPane.add(button1);

JButton button2 = new JButton("Button 2");

contentPane.add(button2);

JButton button3 = new JButton("Button 3");

contentPane.add(button3);

JButton button4 = new JButton("Long-Named Button 4");

contentPane.add(button4);

JButton button5 = new JButton("5");

contentPane.add(button5);

}

public static void main(String[] args)

{

Lab4 lab4 = new Lab4();

lab4.pack();

lab4.setVisible(true);

}

}

Результат виконання даної програми показано на даному малюнку:

75


В конструкторі BoxLayout(contentPane, BoxLayout.Y_AXIS) в якості аргументу

передається значення BoxLayout.Y_AXIS, тому кнопки розташовані по вертикалі.

Крім того, BoxLayout має ряд особливостей. У випадку використання даного

компонувальника береться до уваги також вирівнювання для кожного компонента, доданого до

контейнера. Ця властивість компонента задається таким чином: button1.setAlignmentX(float x),

Де аргумент x може приймати значення від 0.0 до 1.0. Існує три наперед визначених

можливості:

JButton.CENTER_ALIGNMENT = 0.5

JButton.LEFT_ALIGNMENT = 0.0

JButton.RIGHT_ALIGNMENT = 1.0

На наступному малюнку показано три варіанти вирівнювань:

Наступна особливість – розмір кнопки визначається її максимальною величиною. Якщо ми

задамо максимальний розмір кнопки таким, що її ширина буде більшою, ніж екран – кнопка

займе весь контейнер по ширині.

Компонувальник GridLayout

Компонувальник GridLayout розташовує компоненти у вигляді сітки комірок. Кожен

компонент займає весь простір в межах комірки, причому всі комірки мають одинаковий розмір.

Якщо ми змінимо розмір контейнера – всі комірки теж змінять свої розміри, займаючи весь

вільний простір.

Приклад 5.

import javax.swing.*;

import java.awt.*;

public class Lab5 extends JFrame

{

public Lab5()

{

setTitle("GridLayoutDemo");

Container contentPane = getContentPane();

contentPane.setLayout(new GridLayout(0,2));

JButton button1 = new JButton("Button 1");

76


contentPane.add(button1);

JButton button2 = new JButton("Button 2");

contentPane.add(button2);

JButton button3 = new JButton("Button 3");

contentPane.add(button3);

JButton button4 = new JButton("Long-Named Button 4");

contentPane.add(button4);

JButton button5 = new JButton("5");

contentPane.add(button5);

}

public static void main(String[] args)

{

Lab5 lab5 = new Lab5();

lab5.pack();

lab5.setVisible(true);

}

}

В результаті виконання даної програми ви побачите наступне вікно:

Клас GridLayout має два конструктори:

public GridLayout(int rows, int columns)

public GridLayout(int rows, int columns, int horizontalGap, int verticalGap)

Принаймні один із аргументів rows або columns повинен не дорівнювати нулю; якщо

один із аргументів нуль, як в даному прикладі, тоді кількість рядків визначається кількістю

доданих кнопок, причому кнопки розташовується в дві колонки. Аргументи horizontalGap і

verticalGap дозволяють задати відстань між компонентами в пікселах. По замовчуванню ця

відстань дорівнює нулю. Компонувальник GridBagLayout.

Приклад 6.

import javax.swing.*;

import java.awt.*;

public class Lab5 extends JFrame

{

public Lab5()

77


{

setTitle("GridBagLayoutDemo");

Container pane = getContentPane();

pane.setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();

c.fill = GridBagConstraints.HORIZONTAL;

JButton button1 = new JButton("Button 1");

c.weightx = 0.5;

c.gridx = 0;

c.gridy = 0;

pane.add(button1, c);

JButton button2 = new JButton("Button 2");

c.gridx = 1;

c.gridy = 0;

pane.add(button2, c);

JButton button3 = new JButton("Button 3");

c.gridx = 2;

c.gridy = 0;

pane.add(button3, c);

JButton button4 = new JButton("Long-Named Button 4");

c.ipady = 40;

//make this component tall

c.weightx = 0.0;

c.gridwidth = 3;

c.gridx = 0;

c.gridy = 1;

pane.add(button4, c);

JButton button5 = new JButton("5");

c.ipady = 0;

//reset to default

c.weighty = 1.0; //request any extra vertical space

c.anchor = GridBagConstraints.PAGE_END; //bottom of space

c.insets = new Insets(10,0,0,0); //top padding

c.gridx = 1;

//aligned with button 2

c.gridwidth = 2; //2 columns wide

c.gridy = 2;

//third row

pane.add(button5, c);

}

public static void main(String[] args)

{

Lab5 lab5 = new Lab5();

lab5.pack();

lab5.setVisible(true);

78


}

}

На малюнку показано вікно, збудоване із використанням даного компонувальника.

GridBagLayout є найбільш гнучким і разом з тим найбільш складним в платформі Java.

Він дозволяє розміщувати компоненти у виляді сітки із рядів і колонок. При цьому компоненти

можуть займати декілька рядків або колонок. Також колонки можуть мати різну ширину, а рядки

різну висоту. При цьому для визначення висоти і ширини комірки приймається до уваги

найоптимальніший розмір компонента. Цей розмір отримується функцією getPrefferedSize(). Його

також можна задати для кожного компонента з допомогою функції setPrefferedSize(Dimension

dim).

На наступному малюнку показана сітка для попереднього вікна. Як видно, сітка має три

колонки і три рядки. Кнопка в другому рядку займає всі колонки; кнопка в третьому рядку займає

дві праві колонки.

Якщо ми збільшимо вікно, як показано на малюнку, то побачимо, що нижній ряд, де

знаходиться Button 5, займає весь новий вертикальний простір. Новий горизонтальний простір

ділиться між всіма колонками. Така поведінка компонентів задається параметрами

GridBagLayout. Слід відмітити, що кожен компонент займає весь можливий горизонтальний

простір, але не весь можливий вертикальний простір (як можна бачити у Button 5). Ця поведінка

теж задається в програмі.

Для того, щоб задати поведінку кожного компонента, ми повинні задати для кожного із

них свої констрейнти (contraints). Констрейнт – це об’єкт класу GridBagConstraints. При

додаванні компонента до контейнера, ми повинні вказати констрейнт для кожного компонента.

Наприклад:

GridBagConstraints c = new GridBagConstraints();

c.fill = GridBagConstraints.HORIZONTAL;

79


JButton button1 = new JButton("Button 1");

c.weightx = 0.5;

c.gridx = 0;

c.gridy = 0;

pane.add(button1, c);

Нижче пояснюється значення кожної змінної класу GridBagConstrains:

gridx, gridy

Задає рядок і колонку де буде знаходитись верхній лівий куток компонента. По

замовчуванню, gridx=0 і gridy=0.

gridwidth, gridheight

Задає кількіть колонок (gridwidth) або рядків (gridheight) які буде займати

компонент. Або інакше кажучи, цим параметром задається кількість комірок, але не пікселів,

котрі займає компонент. Значення по замовчуванню - 1.

fill

Якщо розмір оптимальний розмір компонента (визначається get/setPrefferedSize() ) є

меншим ніж комірка, в якій знаходиться компонент, цей параметр задає, яким чином буде

зайнятий

вільний

простір

в

межах

комірки.

Значення

по

замовчування

GridBagConstraints.NONE, Якщо цей параметр - GridBagConstraints.HORIZONTAL –

компонент займає весь можливий горизонтальний простір, якщо - VERTICAL - компонент займає

весь можливий вертикальний простір, а у випадку BOTH – компонент займає всю комірку.

ipadx, ipady

Задає мінімальний можливий розмір компонента в комірці. По замовчуванню – 0. Ширина

компонента буде не менше, ніж його мінімальна ширина плюс ipadx*2 піксел, аналогічно,

висота компонента буде не меншою, ніж його мінімальна висота плюс ipady*2 піксел.

(Мінімальні розміри компонента задаються функцією getMinimumSize()).

insets

Задає відстань між компонентом та краєм комірки, в якій знаходиться компонент. Ця

величина – обєкт класу Insets(int top, int left, int bottom, int right). По замовчуванню, дорівнює null.

anchor

Використовується, коли компонент є меншим, ніж комірка, в якій він знаходиться,

визначає розташування компонента в комірці. Можливі значення (GridBagConstraints

константи): CENTER (по замовчуванню), PAGE_START, PAGE_END, LINE_START, LINE_END,

FIRST_LINE_START, FIRST_LINE_END, LAST_LINE_END, і LAST_LINE_START.

Нижче на малюнку показано розташування компонента в межах комірки із заданими

значеннями anchor.

----------------------------------------------------------------------| NORTHEAST

NORTH

NORTHWEST

|

|

|

|

|

|EAST

CENTER

WEST

|

|

|

|

|

|SOUTHEAST

EAST

SOUTHWEST

|

-----------------------------------------------------------------------weightx, weighty

80


Ці параметри визначають те, яким чином розподіляється вільна область контейнера.

Параметр weightx - визначає як розподіляється область між колонками, а weighty – між

рядками. Можливі значення – від 0.0 до 1.0.

Якщо ми не задали ці параметри, то всі компоненти будуть знаходитись по центру

контейнера. Якщо одна із колонок має weightx=1.0, тоді вона буде займати весь вільний простір

контейнера по ширині. Аналогічно розподіляється простір по-вертикалі.

Порядок виконання роботи

1. Виконайте приклад 1 із різними значеннями аргументу alignment.

Спробуєте змінити розміри вікна. Зверніть увагу як при цьому змінюється

розташування кнопок.

2. Виконайте приклад 2 із різною кількістю доданих кнопок.

Спробуєте змінити розміри вікна. Зверніть увагу як при цьому змінюється

розташування кнопок. Спробуйте додати дві кнопки з одним і тим же значенням

BorderLayout.

3. Виконайте приклад 3.

4. Виконайте приклад 4. Задайте різні значення вирівнювання для всіх кнопок:

button1.setAlignmentX(JButton.CENTER_ALIGNMENT).Задайте

значення

максимального розміру кнопок, як показано нижче: button1.setMaximumSize(new

Dimension(Integer.MAX_VALUE,30)).

Спробуйте поміняти розмір вікна.

5.Виконайте приклад 5. Змініть кількість колонок та рядків в конструкторі. Зверніть увагу

на поведінку кнопок при зміні розмірів вікна.

6. Виконайте приклад 6.

7. Зробити висновки.

8. Оформити звіт. У звіті повинно бути текст програми і скріншоти результатів.

9. Прикріпити до VNS файл [Ваша Фамілія].zip в архіві повинно бути файли програм

[Ваша Фамілія]_labN_k.class ,a також файли звіту [Ваша Фамілія]_Zvit_LabN.mdb, де N – номер

лабораторної роботи, k – номер програми.

Контрольні питання

1. Який з компонувальників використовує змінну констрейнт (Constraints)?

2. Який параметр у компонувальнику GridBagLayout задає відстань між компонентом та краєм

комірки, в якій знаходиться компонент.

3. Який параметр у компонувальнику GridBagLayout задає мінімальний можливий розмір

компонента в комірці.

4. Який параметр у компонувальнику GridBagLayout задає кількіть колонок або рядків які буде

займати компонент.

5. Який параметр у компонувальнику GridBagLayout задає рядок і колонку де буде знаходитись

верхній лівий куток компонента.

6. Який з компонувальників дозволяє розміщувати компоненти у виляді сітки із рядів і колонок.

При цьому компоненти можуть займати декілька рядків або колонок. Також колонки можуть

мати різну ширину, а рядки різну висоту. При цьому для визначення висоти і ширини

комірки приймається до уваги найоптимальніший розмір компонента.

7.

Який компонувальник розташовує компоненти у вигляді сітки комірок.

81



 

А также другие работы, которые могут Вас заинтересовать

32868. ГОСУДАРСТВО. МОНАРХИЯ И РЕСПУБЛИКА. ПРАВО 42.5 KB
  Порядок взаимоотношений между членами общества и применения власти определяется: конституцией законами и другими правовыми документами государства которые являются частью формального устройства государства; а также обычаями сформировавшимися внутри общества независимо от государства которые являются основаниями для понимания законов государства и определяют неформализованный порядок применения и трактовки законов. Определений государства множество. Основная функция государства обеспечение комфортного проживания своих граждан. Природа...
32869. ОБЩЕСТВЕННОЕ СОЗНАНИЕ И ЕГО СТРУКТУРА. ЦЕННОСТИ, НРАВСТВЕННОСТЬ, ИСКУССТВО 28.43 KB
  Структурными элементами общественного сознания являются различные его формы: политическое правовое нравственное религиозное эстетическое научное и философское которые различаются между собой по предмету и форме отражения по социальной функции по характеру закономерности развития а также по степени своей зависимости от общественного бытия. В этом и заключается та исторически сложившаяся функция общественного сознания которая делает его объективно необходимым и реально существующим элементом любого общественного устройства. Элементами...
32870. РЕВОЛЮЦИЯ И РЕФОРМА 79.5 KB
  Современные ученые выделяют несколько видов революции: социальная экономическая политическая культурная идеологическая и т. По Марксу социальные революции являются выражением сущности естественно исторического процесса развития общества. Открытый марксизмом закон социальной революции указывает на объективную необходимость в смене одной общественноэкономической формации другой более прогрессивной. Спенсер сравнивал социальные революции с голодом бедствиями повальными болезнями проявлениями неповиновения и “агитацией разросшейся до...
32871. РУССКАЯ АКСИОЛОГИЯ 49.78 KB
  Проблемы ценностей в философии Человека интересует не просто истина а значение объекта для человека для удовлетворения его потребностей. Философские направления XX в выдвигают проблему ценностей на первый план. Выработка ценностей: Часть ценностей человек приобретает по наследству от тех традиций в которые он попал в результате рождения. Интерпритация всегда есть переплавка старых ценностей в новые установки.
32872. ИЛЬИН Иван Александрович 25.84 KB
  усматривал главный порок Человека началасередины 20 века во внутренней расколотости в противоречии между разумом умом рассудком и чувствами душой сердцем. Но в выборе направления движения и основных целях его он был прав поскольку без обретения свободы преодоление тоталитарного отчуждения человека его освобождение невозможно и немыслимо. искал пути к снятию противоречий к такой схеме их взаимодействий при которой отедельные части оппозиции становятся разными проявлениями одних и тех же проблем в существовании человека. Пол это...
32873. ФИЛОСОФИЯ КАК МИРОВОЗЗРЕНИЕ. ПРЕДМЕТ ФИЛОСОФИИ 37.61 KB
  ПРЕДМЕТ ФИЛОСОФИИ. ОСНОВНОЙ ВОПРОС ФИЛОСОФИИ. Главное отличие философии от всех иных наук заключается в том что философия является теоретическим мировоззрением предельным обобщением ранее накопленных человечеством знаний. Предмет философии шире предмета исследования любой отдельной науки философия обобщает интегрирует иные науки но не поглощает их не включает в себя все научное знание не стоит над ним.
32874. МИФОЛОГИЯ КАК МИРОВОЗЗРЕНИЕ. ПЕРВОБЫТНАЯ МИФОЛОГИЯ. РЕЛИГИЯ КАК МИРОВОЗЗРЕНИЕ 57.06 KB
  Как правило мифы пытаются дать ответ на следующие основные вопросы: происхождение Вселенной Земли и человека; объяснение природных явлений; жизнь судьба смерть человека; деятельность человека и его достижения; вопросы чести долга этики и нравственности. Религия форма мировоззрения основанная на вере в наличие фантастических сверхъестественных сил которые влияют на жизнь человека и окружающий мир. При религиозном мировоззрении для человека характерна чувственная образноэмоциональная а не рациональная форма восприятия...
32875. АНТИЧНАЯ ФИЛОСОФИЯ. ПИФАГОР, СОКРАТ, ПЛАТОН, АРИСТОТЕЛЬ, ДЕМОКРИТ, ЭПИКУР 64.08 KB
  Подобно тому как математик ставит вопрос что такое единица и дает довольнотаки сложное определение этого казалось бы простейшего понятия так и философ с глубокой древности задается проблемой: что такое бытие что значит быть Эта специфика философии проливает известный свет и на вопрос о том почему и когда философия возникает. Философ ставит все это под сомнение но делает это для того чтобы докопаться до подлинных корней из которых растет сама данная традиция; в этом и состоит смысл его вопроса: что значит быть что такое бытие А...
32876. СРЕДНЕВЕКОВАЯ ФИЛОСОФИЯ. ОТЦЫ ЦЕРКВИ. ВАСИЛИЙ ВЕЛИКИЙ, ГРИГОРИЙ БОГОСЛОВ, ИОАНН ЗЛАТОУСТ, ФОМА АКВИНСКИЙ, ГРИГОРИЙ ПАЛАМА. РЕАЛИЗМ И НОМИНАЛИЗМ 45.65 KB
  которое признавало Бога в качестве высшего существующего начала а весь окружающий мир Его творения. 50 Можно выделить следующие основные черты средневековой теологической философии: теоцентризм главной причиной всего сущего высшей реальностью основным предметом философских исследований являлся Бог; изучению самого по себе космоса природы явлений окружающего мира уделялось мало внимания так как они считались творением Бога; господствовали догматы истины не нуждающиеся в доказательствах о творении всего Богом и откровении...