Элемент разворота маятникового потока

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

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

  • 1 панель, содержащая две другие панели с 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, теперь вы устанавливаете следующую панель как активную (возможно, ее создание динамически).

Ответ 4

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

Ответ 5

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