2014-04-13 99 views
5

我在讓我的頭是它自己的行困難。標題運行到一週中的幾天,而不是顯示標題,然後顯示日曆中的天數。這是否缺少一個面板?我試過多次更改,但我真的不能告訴日曆網格佈局

package Exercise15_5; 
import java.awt.*; 
import javax.swing.*; 
import java.util.*; 

public class Exercise15_5 extends JFrame { 
    public Exercise15_5(){ 
     //Create panel with gridlayout 
     JPanel calendar = new JPanel(new BorderLayout()); 
     calendar.setLayout(new GridLayout(5,7)); 
     //Add headers 
     String[] headers = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; 
     for(int i = 0; i <7; i++){ 
      calendar.add(new JLabel("" + headers[i])); 
     } 
     //Add days to calendar 
     for(int i = 1; i <31; i++){ 
      calendar.add(new JLabel("" + i)); 
     } 

     JPanel monthHeader = new JPanel(new BorderLayout()); 
     monthHeader.add(new JTextField("\t\t\t04/2014"), BorderLayout.NORTH); 

     monthHeader.add(calendar, BorderLayout.CENTER); 



     add(monthHeader); 
    } 

    public static void main(String[] args) { 
     Exercise15_5 frame = new Exercise15_5(); 
     frame.setTitle("Exercise 15_5"); 
     frame.setSize(600,300); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 


    } 

} 

回答

4

試試你的面板的佈局設置爲new GridLayout(0,7)代替。

GridLayout API狀態如下:

當行的數量和已設置 到非零值,或者通過一個構造或由setRows和 setColumns方法中的列數,指定的列數被忽略。 相反,列數從指定行數和 在佈局組件的總數量來確定。所以, 例如,如果指定了三行兩列和9個 組件添加到佈局,它們將被顯示爲三個 行三列。僅當行數設置爲零時,指定列數纔會影響 佈局。

+0

就是這樣。謝謝!!!你會不會知道如何開始日曆,以反映當前月份?到目前爲止,我 – MontyMax

+0

@MontyMax:我不知道,我以前從來沒有使用日期的工作。 [此線程(http://stackoverflow.com/questions/17232038/calendar-display-using-java-swing)可能是值得一讀,但代碼有點長。 – PakkuDon

2

row計數是關閉的1(但0是更普遍的),我還建議你清理你的構造函數一點。也許是這樣,

// Create panel with gridlayout 
JPanel calendar = new JPanel(new GridLayout(6, 7)); // 6 (or 0), not 5. 
// Add headers 
String[] headers = { "Sunday", "Monday", 
    "Tuesday", "Wednesday", "Thursday", "Friday", 
    "Saturday" }; 
// Use for-each loop. 
for (String header : headers) { 
    calendar.add(new JLabel(header)); 
} 
// Add days to calendar, use String.valueOf 
for (int i = 1; i < 31; i++) { 
    calendar.add(new JLabel(String.valueOf(i))); 
} 

JPanel monthHeader = new JPanel(new BorderLayout()); 
monthHeader.add(new JTextField("\t\t\t04/2014"), 
    BorderLayout.NORTH); 

monthHeader.add(calendar, BorderLayout.CENTER); 

add(monthHeader);