微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java - JFrame 打破了 FlowLayout 之类的组件,但对它们进行垂直排序

如何解决Java - JFrame 打破了 FlowLayout 之类的组件,但对它们进行垂直排序

几个小时以来,我试图创建一个具有以下行为的 JFrame: 我有一个标题(可能包含一个图像) - 这在顶部居中。 -> 检查 这个 JFrame 的其余部分应该用 JPanel 填充。

一个 JPanel 应该放在顶部的中央。第二个 JPanel 应该放在第一个下面,依此类推。当第一个 JPanel 用完屏幕时,需要创建第二行。 我不在乎它们是否被重新排序。这是我准备展示我想要的图画: Example - I need one of that behaviors

我尝试了很多不同布局的组合......但仍然找不到合适的解决方案。

这是我的代码,除了我的面板从左到右而不是从上到下排序之外,它运行良好。:(

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 来归档该行为? 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。