элемент разметки при размахе потока - PullRequest
13 голосов
/ 04 июня 2011

У меня есть панель, которая использует макет потока.

Как сделать разрыв в макете потока?Как <br/> в HTML.Какой-то специальный элемент разрыва или другой трюк, чтобы указать, что указанный элемент и все последующие должны идти на следующую строку.

Ответы [ 5 ]

13 голосов
/ 04 июня 2011

В таком случае я бы поместил два контейнера с разметкой потока друг на друга внутри BoxLayout.Вложенные макеты довольно недорогие.

10 голосов
/ 04 июня 2011

Wrap Layout может быть решением для вас. Он автоматически перемещает компоненты на следующую строку, когда строка заполнена.

8 голосов
/ 04 июня 2011

Вы хотите разделить компоненты вручную на несколько строк?Таким образом, вы знаете, где вы хотите, чтобы перенос строки был.

В этом случае я бы использовал 3 панели:

  • 1 панель, содержащая другие 2 панели с GridLayout с 1 столбцом
  • 2 панели внутри GridLayout, каждая с FlowLayout

Пример кода:

    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    {
        panel = new JPanel();
        frame.getContentPane().add(panel, BorderLayout.NORTH);
        panel.setLayout(new GridLayout(0, 1, 0, 0));
        {
            panel_1 = new JPanel();
            panel.add(panel_1);
            {
                lblPanelFlowlayout = new JLabel("Panel 2: FlowLayout");
                panel_1.add(lblPanelFlowlayout);
            }
        }
        {
            panel_2 = new JPanel();
            panel.add(panel_2);
            {
                lblPanel = new JLabel("Panel 3: FlowLayout");
                panel_2.add(lblPanel);
            }
        }
    }

Вы можете добавить столько новых панелей с FlowLayout, сколько захотите.Каждый раз, когда вы выполняете BR, вы теперь устанавливаете следующую панель как активную (возможно, создаете ее динамически).

1 голос
/ 04 июня 2011

Я не думаю, что это возможно в макете потока, вы можете попробовать другой макет, как GridLayout или GridBagLayout

0 голосов
/ 04 июня 2011

Я бы сделал несколько панелей-заполнителей без вставок, а затем использовал бы некоторый код, чтобы определить, когда необходимо переместить компонент на следующую панель, потому что он ниже минимального порога ширины.Это некрасиво, но это должно сработать.Вам нужно будет выполнить все операции удаления и добавления вручную и в EDT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...