2012-10-24 13 views
9

में दो जेपीनेल का उपयोग करके मैं एक प्रोग्राम बनाने का प्रयास कर रहा हूं जो उपयोगकर्ता को JPanel में कुछ जगह रखने के लिए बटन पर क्लिक करने और उन्हें इस आइटम को स्थानांतरित करने की अनुमति देता है। चलने वाले घटकों को अनुमति देने के लिए मुझे पहले से ही एक अच्छा लेआउट मिला है (this लिंक देखें)। हालांकि, मैं इस तरह एक लेआउट बनाने का सबसे अच्छा तरीका उत्सुक हूं?एक जेएफआरएएम

layout idea

मैं यह कैसे पूरा कर सकते हैं: मेरी आशा कुछ इस तरह है करने के लिए है? क्या मैं दो JPanel या कुछ और उपयोग करना चाहता हूं?

+0

आइटम को किस स्थान पर ले जाना है? –

उत्तर

11

मुख्य पैनल (या विंडो सामग्री फलक) लेआउट प्रबंधक के रूप में BorderLayout होना होगा।

फिर, बटन पैनल BorderLayout.WEST और ड्रैग पैनल को BorderLayout.CENTER पर जोड़ा जाएगा।

लेआउट प्रबंधकों को स्विंग करने के लिए Visual Guide है।

6

कोशिश का उपयोग करने के JSplitPane:

enter image description here

यहाँ एक कोड उदाहरण है:

class SplitPane extends JFrame { 

private  JSplitPane splitPaneV; 
private  JSplitPane splitPaneH; 
private  JPanel  panel1; 
private  JPanel  panel2; 
private  JPanel  panel3; 


public SplitPane(){ 
    setTitle("Split Pane Application"); 
    setBackground(Color.gray); 

    JPanel topPanel = new JPanel(); 
    topPanel.setLayout(new BorderLayout()); 
    getContentPane().add(topPanel); 

    // Create the panels 
    createPanel1(); 
    createPanel2(); 
    createPanel3(); 

    // Create a splitter pane 
    splitPaneV = new JSplitPane(JSplitPane.VERTICAL_SPLIT); 
    topPanel.add(splitPaneV, BorderLayout.CENTER); 

    splitPaneH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
    splitPaneH.setLeftComponent(panel1); 
    splitPaneH.setRightComponent(panel2); 

    splitPaneV.setLeftComponent(splitPaneH); 
    splitPaneV.setRightComponent(panel3); 
} 

public void createPanel1(){ 
    panel1 = new JPanel(); 
    panel1.setLayout(new BorderLayout()); 

    // Add some buttons 
    panel1.add(new JButton("North"), BorderLayout.NORTH); 
    panel1.add(new JButton("South"), BorderLayout.SOUTH); 
    panel1.add(new JButton("East"), BorderLayout.EAST); 
    panel1.add(new JButton("West"), BorderLayout.WEST); 
    panel1.add(new JButton("Center"), BorderLayout.CENTER); 

} 

public void createPanel2(){ 
    panel2 = new JPanel(); 
    panel2.setLayout(new FlowLayout()); 

    panel2.add(new JButton("Button 1")); 
    panel2.add(new JButton("Button 2")); 
    panel2.add(new JButton("Button 3")); 
} 

public void createPanel3(){ 
    panel3 = new JPanel(); 
    panel3.setLayout(new BorderLayout()); 
    panel3.setPreferredSize(new Dimension(400, 100)); 
    panel3.setMinimumSize(new Dimension(100, 50)); 

    panel3.add(new JLabel("Notes:"), BorderLayout.NORTH); 
    panel3.add(new JTextArea(), BorderLayout.CENTER); 
} 

public static void main(String args[]){ 
    try { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    } catch (Exception evt) {} 
    // Create an instance of the test application 
    SplitPane mainFrame = new SplitPane(); 
    mainFrame.pack(); 
    mainFrame.setVisible(true); 
} 
} 

आप के साथ खेल सकते splitPaneH.setOneTouchExpandable सही/गलत

आप दोनों के लिए विभक्त स्थान confugure कर सकते हैं जैसे:

Toolkit tk = Toolkit.getDefaultToolkit(); 
    Dimension d = tk.getScreenSize(); 
    int width = d.width; 
    int height = d.height; 

    spane.setDividerLocation((width*3)/4); 
    spanex.setDividerLocation(width/4); 
+0

'spane.setDividerLocation ('चौड़ाई * 3)/4) में' spane' क्या है; '??? यह पूरे कोड में मौजूद नहीं है। अच्छा जवाब बीटीडब्ल्यू के लिए +1। –