2012-09-04 28 views
5

मैं जावा स्विंग का उपयोग कर ग्रहण में एक संपर्क सूची अनुप्रयोग कोडिंग कर रहा हूं। मैं एक साधारण टेबल लेआउट कैसे प्राप्त कर सकता हूं जिसमें केवल कॉलम और पंक्तियां हों? मुझे पंक्ति या कॉलम लेबल नहीं चाहिए।एक संपर्क सूची प्रोग्राम बनाना

कुछ इस तरह:

first name: john 
middle name: franklin 
last name: doe 

कहाँ नाम संपादन योग्य पाठ बॉक्स आदि

सबसे अच्छा घटक का उपयोग करने में क्या है हो सकता है?

मेरे पास टेक्स्ट फ़ील्ड के नीचे बटन भी होंगे। वर्तमान में मेरे पास JFrame है जो सही ढंग से चल रहा है। यह एक खिड़की खींचता है जिसमें मेरे मेनू विकल्प सही होते हैं। लेकिन जब मैं ऐसा करने की कोशिश करता हूं:

myFrame.setLayout(new GridLayout(6, 2)); 

मुझे एक त्रुटि मिलती है। मैं दो कॉलम और 5 पंक्तियों (शायद 6) का ग्रिड लेआउट रखना चाहता हूं। मैं बाएं कॉलम पर एक लेबल, और दाएं कॉलम पर एक टेक्स्ट बॉक्स रखना चाहता हूं। फिर नीचे दो बटन, केंद्रित।

उत्तर

4

आप अलग-अलग पैनलों में अपने फ़ील्ड और नियंत्रण (बटन) को तोड़ने के बेहतर होंगे, इससे आप प्रत्येक के लिए अलग-अलग लेआउट प्रबंधक प्रदान कर सकते हैं।

मैं BorderLayout का उपयोग कर JPanel आधार से शुरू करूंगा।

इस पर, मैं CENTER स्थिति और नियंत्रण (बटन) SOUTH स्थिति पर "फ़ील्ड" पैनल जोड़ दूंगा।

क्षेत्रों के लिए, मैं एक GridBagLayout का उपयोग करते हैं, लेकिन मुझे लगता है कि जैसे picky हूँ, और नियंत्रण कक्ष के लिए मैं शायद एक FlowLayout (जब तक आप एक अच्छा ButtonLayout प्रबंधक की पहुंच है;) का उपयोग करेंगे)

इसका मतलब है आप

enter image description here

कोड नमूना के साथ अद्यतन की तरह कुछ लग सकती है

public class FormPanel extends JPanel { 

    private JTextField fldFirstName; 
    private JTextField fldMiddleName; 
    private JTextField fldLastName; 
    private JTextField fldDateOfBirth; 
    private JTextField fldEMail; 
    private JButton okButton; 
    private JButton cancelButton; 

    public FormPanel() { 

     setLayout(new BorderLayout()); 
     add(createFieldsPane()); 
     add(createButtonsPane(), BorderLayout.SOUTH); 

    } 

    public JPanel createButtonsPane() { 

     JPanel panel = new JPanel(new FlowLayout()); 
     panel.add((okButton = createButton("Ok"))); 
     panel.add((cancelButton = createButton("Cancel"))); 

     return panel; 

    } 

    protected JButton createButton(String text) { 

     return new JButton(text); 

    } 

    public JPanel createFieldsPane() { 

     JPanel panel = new JPanel(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.insets = new Insets(2, 2, 2, 2); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.anchor = GridBagConstraints.WEST; 

     panel.add(createLabel("First Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Middle Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Last Name:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("Date of Birth:"), gbc); 
     gbc.gridy++; 
     panel.add(createLabel("EMail:"), gbc); 

     gbc.gridy = 0; 
     gbc.gridx++; 
     gbc.weightx = 1; 
     panel.add((fldFirstName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldLastName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldMiddleName = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldDateOfBirth = createField()), gbc); 
     gbc.gridy++; 
     panel.add((fldEMail = createField()), gbc); 

     JPanel filler = new JPanel(); 
     filler.setOpaque(false); 

     gbc.gridy++; 
     gbc.weightx = 1; 
     gbc.weighty = 1; 
     panel.add(filler, gbc); 

     return panel; 

    } 

    protected JLabel createLabel(String text) { 

     return new JLabel(text); 

    } 

    protected JTextField createField() { 

     JTextField field = new JTextField(12); 
     return field; 

    } 

} 
+0

भी देखें (बहुत खराब) 'GroupLayout'। –

+0

फॉर्मों के लिए मेरा वोट (हमेशा के रूप में) JGoodies के फॉर्मलेआउट पर जाता है – Robin

+0

कोई भी मिगलाउट का सुझाव नहीं देता है? – MadProgrammer