2012-12-13 26 views
8

में स्विंग का उपयोग करके किसी निर्दिष्ट स्थान पर बटन डालना मैं जावा प्रोग्राम बनाने के तरीके सीखने की कोशिश कर रहा हूं और मैं स्विंग के साथ काम कर रहा हूं। मैं खिड़की के ऊपरी बाएं कोने में एक बटन लगाने की कोशिश कर रहा हूं और यह शीर्ष केंद्र में जा रहा है।जावा

public void createGUI(){ 
    JFrame frame = new JFrame("My Project"); 
    frame.setDefaultCloseOperation(3); 
    frame.setSize(400, 350); 
    frame.setVisible(true); 

    JPanel panel = new JPanel(); 

    frame.add(panel); 

    addButtonGUI(panel, new JButton(), "test", 1, 1); 
} 

public void addButtonGUI(JPanel panel, JButton button, String text, int x, int y){ 
    GridBagConstraints gbc = new GridBagConstraints(); 
    button.setText(text); 
    button.setEnabled(true); 
    gbc.gridx = x; 
    gbc.gridy = y; 
    gbc.gridwidth = 2; 
    gbc.weightx = 1.0D; 
    gbc.fill = 2; 
    panel.add(button, gbc); 
} 

मैं क्या गलत कर रहा हूं या ऐसा करने का एक बेहतर तरीका है? कृपया मदद

+1

'frame.setDefaultCloseOperation (3); 'जादू संख्याओं का प्रयोग न करें। जे 2 एसई ने इन मूल्यों के लिए वर्णनात्मक रूप से स्थिरांक नामित किए हैं। –

उत्तर

2
बजाय

addButtonGUI(panel, new JButton(), "test", 1, 1); 
} 

क्या हुआ अगर आप

addButtonGUI(panel, new JButton(), "test", 0, 0); 
} 
7

इस्तेमाल किया होगा आप का उपयोग करने के GridBagLayout को JPanel के लेआउट निर्धारित करने की आवश्यकता GridBagConstraints:

JPanel panel = new JPanel(new GridBagLayout()); 

जैसा कि आपके पास है एक प्रभावी 'सेल' आपको एंकर का उपयोग करने की आवश्यकता है और weighty को JButton के लिए वाई-अक्ष में आंदोलन की अनुमति देने के लिए सेट करें।

gbc.anchor = GridBagConstraints.NORTHWEST; 
gbc.weighty = 1.0; 

इसके अलावा, मैं NONE करने के लिए fill सेटिंग सेट होगा:

gbc.fill = GridBagConstraints.NONE; 

ताकि बटन पैनल की पूरी चौड़ाई पर कब्जा नहीं है। (2 = हॉरिज़ोनल भरें)।