|
Spec-Zone .ru
спецификации, руководства, описания, API
|
В каждом из следующих вопросов выберите менеджера (ов) расположения, которому наиболее естественно подходят для описанного расположения. Предположите, что контейнер, которым управляет менеджер по расположению, является a JPanel. [Подсказка: Два раздела, которые могли бы помочь, являются Визуальным, Индексируют к Компонентам Swing и Подсказкам относительно Выбора менеджера по Расположению.]
Вопрос 1. У контейнера есть один компонент, который должен занять так много места насколько возможно
![]() |
![]() |
a. BorderLayout
b. GridLayout
c. GridBagLayout
d. a и b
e. b и c
Ответ 1: d. BorderLayout и GridLayout легко имейте дело с этой ситуацией. Хотя Вы могли использовать GridBagLayout, это намного более сложно чем необходимый.
Вопрос 2. Контейнер ссорится компонентов, которые должны все быть выведены на экран в том же самом размере, заполняя containerâ s вся область.

a. FlowLayout
b. GridLayout
c. BoxLayout
d. a и b
Ответ 2: b. Этот тип расположения того-же-самого-размера — является ли подряд, столбец, или сетка — что GridLayout является лучшим в.
Вопрос 3. Контейнер выводит на экран много компонентов в столбце с любым дополнительным пространством, идущим между первыми двумя компонентами.
![]() |
![]() |
a. FlowLayout
b. BoxLayout
c. GridLayout
d. BorderLayout
Ответ 3: b. BoxLayout размечает компоненты или в столбце или в строке. Можно определить дополнительное пространство, используя невидимый компонент.
Вопрос 4. Контейнер может вывести на экран три абсолютно различных компонента в разное время, завися, возможно, от состояния программы или ввода данных пользователем. Даже если componentsâ размеры отличаются, переключаясь от одного компонента до следующего shouldnâ t изменяют количество места, отведенного для компонента.


a. SpringLayout
b. BoxLayout
c. CardLayout
d. GridBagLayout
Ответ 4: c. CardLayout существует, чтобы позволить компонентам совместно использовать то же самое пространство. Хотя более просто использовать a JTabbedPane компонент, чтобы управлять областью, CardLayout решение, когда Вы не хотите вкладки.
Упражнение 1. Реализуйте расположение описанный и показанный рассматриваемый 1.
Ответ 1: См.
JPanel p = new JPanel(new BorderLayout());
p.add(createComponent("Component 1"),
BorderLayout.CENTER);
frame.setContentPane(p);
Упражнение 2. Реализуйте расположение описанные и показанные рассматриваемые 2.
Ответ 2: См. Layout2.java
. Вот код, который реализует расположение:
JPanel p = new JPanel(new GridLayout(1,0));
p.add(createComponent("Component 1"));
p.add(createComponent("Component 2"));
p.add(createComponent("Component 3"));
p.add(createComponent("Component 4"));
frame.setContentPane(p);
Упражнение 3. Реализуйте расположение описанные и показанные рассматриваемые 3.
Ответ 3: См. Layout3.java
. Вот код, который реализует расположение:
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));
p.add(createComponent("Component 1"));
p.add(Box.createVerticalGlue());
p.add(createComponent("Component 2"));
p.add(createComponent("Component 3"));
p.add(createComponent("Component 4"));
frame.setContentPane(p);
Упражнение 4. Реализуйте расположение описанные и показанные рассматриваемые 4.
Ответ 4: См. Layout4.java
. Вот код, который реализует расположение:
...//Where the radio buttons are set up:
for (int i= 0; i < strings.length; i++) {
...
rb[i].setActionCommand(String.valueOf(i));
...
}
...//Where the panel to contain the shared-space components is set up:
cards = new JPanel(new CardLayout());
for (int i = 0; i < strings.length; i++) {
cards.add(createComponent(strings[i]), String.valueOf(i));
}
...//In the action listener for the radio buttons:
public void actionPerformed(ActionEvent evt) {
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, (String)evt.getActionCommand());
}
Упражнение 5. Добавляя одну строку кода, сделайте программу, от которой Вы записали для дисплея Упражнения 2 компоненты справа налево, вместо от слева направо.

Ответ 5: можно изменить горизонтальную ориентацию, используя setComponentOrientation метод, определенный Component class. Например:
p.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);