Как использовать GridLayout и несколько панелей? - PullRequest
0 голосов
/ 23 сентября 2018

Как мне использовать несколько JPanel контейнеров, чтобы этот код выглядел следующим образом?

Это изображение того, каким должен быть мой код, но я не могу понять это.Я могу использовать только GridLayout, BorderLayout и FlowLayout.Как новичок, мы только рассмотрели основные понятия, но мне нужна дополнительная помощь.

Мне также не разрешено использовать GridBagLayout.Я ценю всю помощь.

1 Ответ

0 голосов
/ 23 сентября 2018

Общая стратегия решения сложных вычислительных задач - разбить их на небольшие четко определенные управляемые задачи.Разделяй и властвуй.Это также относится и к графическому интерфейсу: разбейте конструкцию на небольшие, легко разрабатываемые контейнеры.В этом случае рассмотрите возможность разделения дизайна на 3 области (JPanel s), вложенных в основную JPanel:

enter image description here

Если вы можете 'Используя GridBagLayout, вы можете установить нижнюю панель, используя BoxLayout.BoxLayout является допустимым параметром также для главной панели, чтобы разрешить разные дочерние панели (верх, центр, низ) высота.

Демо:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Lab1 extends JFrame
{
    public Lab1() {

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel main = new JPanel(new GridLayout(3,1));
        //to allow different child-panels height use BoxLayout
        //BoxLayout boxLayout = new BoxLayout(main, BoxLayout.Y_AXIS);

        add(main);
        JPanel top = new JPanel(new GridLayout(1,3));
        main.add(top);
        top.add(getPanel(Color.RED));
        top.add(getPanel(Color.GREEN));
        top.add(getPanel(Color.BLUE));

        JPanel center = new JPanel(new GridLayout(1,4));
        main.add(center);
        center.add(getPanel(Color.YELLOW));
        center.add(getPanel(Color.CYAN));
        center.add(getPanel(Color.BLACK));
        center.add(getPanel(Color.LIGHT_GRAY));

        JPanel bottom = new JPanel();
        bottom.setLayout(new BoxLayout(bottom, BoxLayout.LINE_AXIS));
        main.add(bottom);

        bottom.add(getPanel(Color.PINK));
        JPanel rightPane =  getPanel(Color.MAGENTA);
        rightPane.setPreferredSize(new Dimension(900, 200));
        bottom.add(rightPane);

        pack();
        setVisible(true);
    }

    private JPanel getPanel(Color color) {
        JPanel panel = new JPanel();
        panel.setBackground(color);
        panel.setPreferredSize(new Dimension(300, 200));
        return panel;
    }

    public static void main(String args[])
    {
        new Lab1();
    }
}
...