java - 为什么需要为 Java Swing 应用程序设置布局管理器?

标签 java swing layout-manager

此 Java 代码使用 Swing 显示一个月的日历:

import java.awt.*;
import javax.swing.*;
public class Calendar extends JFrame {
    JLabel days[] = new JLabel[31];
    JLabel days_of_week[] = new JLabel[7];
    JLabel month = new JLabel("July 2014");`

    Calendar() {
        super("Calendar");
        setSize(260, 260);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     
        setLayout(new FlowLayout());
        JPanel monthPane = new JPanel();
        monthPane.add(month);
        add(monthPane);
        JPanel days_panel = new JPanel();
        GridLayout calLayout = new GridLayout(6, 7);
        days_panel.setLayout(calLayout);
        String[] dayNames = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
        for (int i = 0; i < 7; ++i) {
            days_of_week[i] = new JLabel(dayNames[i]);
            days_panel.add(days_of_week[i]);
        }        
        JLabel blank1 = new JLabel();
        days_panel.add(blank1);
        JLabel blank2 = new JLabel();
        days_panel.add(blank2);
        for (int i = 0; i < days.length; ++i) {
            days[i] = new JLabel("" + (i + 1));
            days_panel.add(days[i]);
        }
        add(days_panel);
        setVisible(true);
    }

    public static void main(String[] arguments) {
        Calendar cal = new Calendar();
    }
}

由于某种原因,当我删除行 setLayout(new FlowLayout()); 时,日历标题消失了。 FlowLayout不是默认的吗?为什么我必须明确设置它才能使代码正常工作?

最佳答案

 Isn't FlowLayout the default?

错误,Jframe的默认布局是BorderLayout

解决方案:

如果你想删除Flowlayout那么你需要指定JPanel放置的位置

示例:

JLabel blank1 = new JLabel();
    days_panel.add(blank1,BorderLayout.NORTH);
    JLabel blank2 = new JLabel();
    days_panel.add(blank2,BorderLayout.CENTER);

关于java - 为什么需要为 Java Swing 应用程序设置布局管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027149/

相关文章:

java - 在 JPanel 中绘图时未绘制任何内容

Java加载图像更快

java swing jtable 单元格渲染器组件的屏幕位置

java - 当请求是映射的 servlet 时如何知道过滤器内部?

java - 获取单个 xml 节点 - android dev

java - 在组件边界外绘图

java - 如何在 Swing 中绘制布局单元格及其边缘?

java - AWS S3 与 Spring Boot 错误 "profile file cannot be null"

java - 无法在 jetty + nginx 上加载资源:net::ERR_CONNECTION_RESET

java - 单选按钮位置