2014-04-13 7 views
5

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


    } 

} 

उत्तर

4

बजाय new GridLayout(0,7) करने के लिए अपने पैनल के लेआउट सेट करके देखें।

GridLayout API निम्नलिखित राज्यों:

जब दोनों पंक्तियों की संख्या और स्तंभों की संख्या ग़ैर शून्य मान को स्थापित किए गए हैं, या तो एक निर्माता द्वारा या setRows और setColumns तरीकों से, निर्दिष्ट कॉलम की संख्या को नजरअंदाज कर दिया जाता है। इसके बजाय, स्तंभों की संख्या पंक्तियों की निर्धारित संख्या और लेआउट में घटकों की कुल संख्या से निर्धारित होता है। तो, उदाहरण के लिए, यदि तीन पंक्तियों और दो कॉलम का उल्लेख किया गया है और नौ घटकों लेआउट में जुड़ जाते हैं, वे तीन स्तंभों के तीन पंक्तियों के रूप में प्रदर्शित किया जाएगा। कॉलम की संख्या निर्दिष्ट करना लेआउट को तब प्रभावित करता है जब पंक्तियों की संख्या शून्य पर सेट की जाती है।

+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); 
संबंधित मुद्दे