2014-04-13 14 views
5

Başlığımın kendi satırında olmasını sağlamakta güçlük çekiyorum. Üstbilgi, haftanın günlerine başlığını göstermek yerine haftanın günlerine doğru ve ardından da takvimdeki gün sayısını gösterir. Bu bir panel eksik mi? Ben birden fazla değişiklik denedim ama gerçektenTakvim GridLayout

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); 


    } 

} 

cevap

4

yerine new GridLayout(0,7) için panelin düzenini ayarlamayı deneyin söyleyemem. Aşağıdaki

GridLayout API durumları:

zaman satır sayısı ve bir kurucu ya da setRows ve SetColumns yöntemleri ile, sıfır olmayan değerlere ayarlanmış olan sütun sayısı da Belirtilen sütun sayısı yok sayılır. Bunun yerine, sütunların sayısı belirtilen satırın satırlarından ve düzende toplam bileşen sayısından belirlenir. Dolayısıyla, örneğinde, üç satır ve iki sütun belirtildiyse ve dokuz bileşeni düzene eklenirse, üç sütun üç satır olarak görüntülenir. Sütun sayısını belirtmek, düzenini yalnızca satır sayısı sıfıra ayarlandığında etkiler. Ben de size yapıcı Biraz temizlik tavsiye

+0

İşte bu kadar. Teşekkürler!!! Takvimi nasıl başlatılacağını bilmek için bu ayı yansıtacak şekilde olur muydunuz? Şimdiye kadar ben – MontyMax

+0

@MontyMax var: Bilmiyorum, daha önce tarihlerle çalışmak zorunda kalmamıştım. [Bu konu] (http://stackoverflow.com/questions/17232038/calendar-display-using-java-swing) okunmaya değer olabilir ancak kod biraz uzun olabilir. – PakkuDon

2

Sizin row sayımı 1 tarafından kapalı (ama 0 daha geneldir). Belki bu gibi,

// 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);