我的程序中似乎有一个错误,我无法修复我的一生。
这是代码:
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)
。