jframe会打断flowlayout等组件,但会垂直排列它们

5tmbdcev  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(272)

几个小时以来,我一直在尝试创建一个jframe,其行为如下:我有一个标题(可能包括一个图像)-这是在顶部居中。->检查这个jframe的其余部分是否应该填充jpanel。
第一个J面板应该放在顶部的中心。第二个jpanel应该放在第一个jpanel下面,依此类推。当第一个jpanel离开屏幕时,需要创建第二行。我不在乎他们是否重新排序。我准备了一张图来展示我想要的东西:例如,我需要一个这样的行为
我试过很多不同布局的组合。。但仍然找不到正确的解决方案。
这是我的代码,除了面板是从左到右排序而不是从上到下排序之外,它工作得很好(

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class myFrameClass extends JFrame {

    myFrameClass() {
        super();
        setLayout(new BorderLayout());
        GraphicsDevice[] gs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
        GraphicsConfiguration[] gc = gs[0].getConfigurations();
        setUndecorated(true);
        setBackground(Color.WHITE);
        setLocation(gc[0].getBounds().x, gc[0].getBounds().y);
        setExtendedState(JFrame.MAXIMIZED_BOTH);

        add(getHeader(), BorderLayout.NORTH);
        add(getPanels());

        setVisible(true);
    }

    private JPanel getPanels() {
        JPanel p = new JPanel();
        p.setLayout(new FlowLayout());
        int cnt = 6;

        for (int i = 0; i < cnt; i++) {
            p.add(getPanel());
        }   

        return p;
    }

    private JPanel getPanel() {
        JPanel p = new JPanel();
        p.setBackground(Color.RED);
        p.setPreferredSize(new Dimension(200, 200));
        return p;
    }

    private JPanel getHeader() {
        JPanel p = new JPanel();
        p.add(new JLabel("Titel"));
        return p;
    }

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

我还找到了oracle verticalflowlayout,但无法访问它。它能帮我吗?万一-怎么用?
否则。。如何使用jframe来存档该行为?谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题