2015-04-29 21 views
1

在我的程序中似乎有一個錯誤,我無法修復我的生活。GridLayout .add error

下面是代碼:

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或有一些其他的基本錯誤,我失蹤或是一些隨機錯誤。 謝謝

回答

0

GridLayoud,行優先於列。從文檔:

當通過構造函數或setRows和setColumns方法將行數和列數設置爲非零值時,將忽略指定的列數。而是根據指定的行數和佈局中的組件總數確定列數。因此,例如,如果指定了三行兩列並將九個組件添加到佈局,則它們將顯示爲三行三列。僅當行數設置爲零時,指定列數纔會影響佈局。

所以,你指定你的GridLayout有6行,這是如何組件beeing佈局。如果您只想指定一行,請將new GridLayout(6, 7, 5, 5)更改爲new GridLayout(1, 7, 5, 5)

+0

身體將包含一個日曆,所以我需要一個6x7網格來承載所有的日子。 –

+0

然後,一旦你有足夠的組件添加,它可能會工作。就目前而言,正如文檔所說,行比列更受青睞,所以你的7個組件正在佈局以填充6行。 – Renatols

+0

啊我明白了。謝謝。我想這是做測試失敗我的大聲笑的例子 –