2013-04-22 2 views
5

मुझे ग्रुपलेआउट (अन्य लेआउट नहीं) का उपयोग करके एक जीयूआई बनाने की जरूरत है। जीयूआई निम्नलिखित तरह दिखेगा:जावा में ग्रुपलेआउट का उपयोग करके जीयूआई बिल्डिंग

---------------------------- 
| field 1 field 2 field 3 | 

| FFIEEELLLDD4 FIELDDDDDD5 | 

| FIEEEEEEEEEEEEEEELDDDD 6 | 
_____________________________ 

फील्ड्स 1 - 3 ले 1 लंबाई प्रत्येक, क्षेत्र 4 और 5 1.5 लंबाई प्रत्येक लेते हैं, और क्षेत्र 6 3 लंबाई लेता है। तीन समूहों को शुरुआत और अंत दोनों में गठबंधन किया जाता है।

मैं इस http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html का जिक्र कर रहा हूं।

सादगी के लिए, मैं जेएलएबल्स को फ़ील्ड के लिए प्लेसहोल्डर के रूप में उपयोग करूंगा।

यहां मेरा कोड है और मुझे जीयूआई प्राप्त करने की कोई किस्मत नहीं है।

public class RecorderGUI extends JFrame { 
    private final JLabel one; 
    private final JLabel two; 
    private final JLabel three; 
    private final JLabel four; 
    private final JLabel five; 
    private final JLabel six; 
public RecorderGUI() { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    GroupLayout layout = new GroupLayout(panel); 
    panel.setLayout(layout); 

    one = new JLabel("one"); 
    two = new JLabel("two"); 
    three = new JLabel("three"); 
    four = new JLabel("four"); 
    five = new JLabel("five"); 
    six = new JLabel("six"); 
     layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup()) 
       .addComponent(one) 
       .addComponent(two) 
       .addComponent(three) 
      .addGroup(layout.createSequentialGroup()) 
       .addComponent(four) 
       .addComponent(five)) 
      .addComponent(six)); 

     layout.setVerticalGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
       .addComponent(one) 
       .addComponent(two) 
      .addComponent(three)) 
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
      .addComponent(four) 
      .addComponent(five)) 
      .addComponent(six)); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
    public static void main(final String[] args) { 
     RecorderGUI GUI = new RecorderGUI(); 
    } 

कोड निम्नलिखित में जिसके परिणामस्वरूप है, जो नहीं है कि मैं क्या चाहता था: एक, दो और तीन एक साथ विलय कर रहे हैं; चार और पांच ओवरलैप भी।

क्षमा करें, मैं उत्पादन जीयूआई की एक तस्वीर को जोड़ना चाहते हैं, लेकिन मैं चित्रों संलग्न नहीं कर सकता क्योंकि मैं 10 प्रतिष्ठा :(अंतर्गत

+0

एक, दो और तीन एक साथ विलय कर रहे हैं;। चार और पांच ओवरलैप के साथ-साथ – newtothissite

+0

और क्यों GroupLayout' – Howard

उत्तर

10

कुछ parantheses फिक्स्ड और घटकों के लिए संकेत का आकार बदलने इससे जोड़ा गया:।

layout.setHorizontalGroup(layout 
    .createParallelGroup(GroupLayout.Alignment.LEADING) 
    .addGroup(layout.createSequentialGroup() 
     .addComponent(one, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(two, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(three, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    .addGroup(layout.createSequentialGroup() 
     .addComponent(four, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(five, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    .addComponent(six, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); 

layout.setVerticalGroup(layout.createSequentialGroup() 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
     .addComponent(one).addComponent(two).addComponent(three)) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
     .addComponent(four).addComponent(five)) 
    .addComponent(six)); 

enter image description here

+0

@Howard [कृपया आप इस थ्रेड में असली मुद्दा पता है] ('करने के लिए प्रतिबंध? http: // रों tackoverflow.com/questions/16147957/jtable-adding-one-to-a-jpanel-and-it-not-displaying-itself), कृपया क्या कारण है कि पसंदीदा आकार चला गया (शून्य आयाम देता है) – mKorbel

संबंधित मुद्दे