网格布局 .add 错误



我的程序中似乎有一个错误,我无法修复我的一生。

这是代码:

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.util.*;
public class CalendarGUI extends JPanel {
    ProgramCalendar currentCalendar;
    GregorianCalendar sideCalendar; 
    String[] month = {"January", "February", "March",  "April", "May", "June", "July", "August",
            "September", "October", "November", "December"};
    public CalendarGUI(ProgramCalendar pc){
        currentCalendar = pc;
        sideCalendar = new GregorianCalendar();
        JPanel calendarSidePanel = new JPanel();
        calendarSidePanel.setSize(400,400);
        calendarSidePanel.setLayout(new BorderLayout());
        //sets month
        JTextPane monthText = new JTextPane();
        monthText.setText(month[sideCalendar.get(Calendar.MONTH)]);
        calendarSidePanel.add(monthText, BorderLayout.NORTH);
        //main part of error
        JPanel sideCalendarMain = new JPanel(new GridLayout(6, 7, 5, 5));
        JTextPane sun = new JTextPane();
        sun.setText("Sun");
        sideCalendarMain.add(sun);
        JTextPane mon = new JTextPane();
        mon.setText("Mon");
        sideCalendarMain.add(mon);
        JTextPane tues = new JTextPane();
        tues.setText("Tues");
        sideCalendarMain.add(tues);
        JTextPane wed = new JTextPane();
        wed.setText("Wed");
        sideCalendarMain.add(wed);
        JTextPane thurs = new JTextPane();
        thurs.setText("Thur");
        sideCalendarMain.add(thurs);
        JTextPane fri = new JTextPane();
        fri.setText("Fri");
        sideCalendarMain.add(fri);
        JTextPane sat = new JTextPane();
        sat.setText("Sat");
        sideCalendarMain.add(sat);
        calendarSidePanel.add(sideCalendarMain, BorderLayout.CENTER);
        add(calendarSidePanel);
        setSize(1000,1000);
    }
}

问题是我认为它会这样显示:

            April
Sun Mon Tues Wed Thurs Fri Sat

而不是

 April
Sun Mon
Tues Wed
Thurs Fri
Sat

当前正在显示。

我只是滥用了 GridLayout,还是我缺少其他一些基本错误,或者它是一些随机错误。谢谢

GridLayoud中,行优先于列。从文档中:

当构造函数或 setRows 和 setColumns 方法将行数和列数都设置为非零值时,将忽略指定的列数。相反,列数是根据布局中指定的行数和组件总数确定的。因此,例如,如果指定了三行和两列,并且将九个组件添加到布局中,则它们将显示为三行三列。仅当行数设置为零时,指定列数才会影响布局。

因此,您指定您的GridLayout有 6 行,这就是组件的布局方式。如果只想指定一行,请将new GridLayout(6, 7, 5, 5)更改为 new GridLayout(1, 7, 5, 5)

相关内容

最新更新