2008-11-03 11 views
8

में एम्बेडेड मैं एक जावा प्रोग्राम लिख रहा हूं जिसके लिए एक फ़ाइल खुले संवाद की आवश्यकता है। फ़ाइल खुला संवाद मुश्किल नहीं है, मैं JFileChooser का उपयोग करने की उम्मीद कर रहा हूं। मेरी समस्या यह है कि मैं एक दोहरी फलक JFrame (2 JPanels से मिलकर) चाहता हूं। बाएं पैनल में JList होगा, और दाएं पैनल में फ़ाइल खुली संवाद होगी।जेएफइल कूसर एक जेपीनल

जब मैं JFileChooser.showOpenDialog() का उपयोग करता हूं तो यह अन्य सभी विंडोज़ के ऊपर संवाद बॉक्स खोलता है, जो मैं नहीं चाहता हूं। (या शायद कोई अन्य फ़ाइल चयन संवाद) JPanel के अंदर प्रदर्शित करने का कोई तरीका है और इसके ऊपर पॉप-अप नहीं है?

यहां कोड है जो मैंने कोशिश की है, इस बिंदु पर यह बहुत सरल है। मैं इस बिंदु पर JPanel में एम्बेड करने के लिए केवल JFileChooser प्राप्त करने का प्रयास कर रहा हूं।

public class JFC extends JFrame{ 
    public JFC() 
    { 
     setSize(800,600); 

     JPanel panel= new JPanel(); 

     JFileChooser chooser = new JFileChooser(); 
     panel.add(chooser); 

     setVisible(true); 

     chooser.showOpenDialog(null); 
    } 

    public static void main(String[] args) 
    { 
     JFC blah = new JFC(); 
    } 
} 

मैं भी this और panel साथ chooser.showOpenDialog बुला की कोशिश की है, लेकिन कोई लाभ नहीं हुआ। इसके अलावा, मैंने सीधे फ्रेम पर JFileChooser जोड़ने का प्रयास किया है। ऊपर सूचीबद्ध दोनों प्रयासों में अभी भी फ्रेम या पैनल के सामने JFileChooser पॉप अप है (जिस पर मैं JFileChooser को जोड़ता हूं)।

उत्तर

10

JFileChooser JComponent और घटक को बढ़ाता है ताकि आप इसे सीधे अपने फ्रेम में जोड़ सकें।

JFileChooser fc = ... 
JPanel panel ... 
panel.add(fc); 
3

यदि आप मक्खी पर JFileChooser जोड़ रहे हैं, तो आपको revalidate() को कॉल करने की आवश्यकता होगी।

स्टीव का जवाब सही है। आप अन्य कंटेनरों में एक JFileChooser जोड़ सकते हैं।

5

"बटन" फ़ाइल चयनकर्ता में पहुंचने के लिए, आप इसे करने के लिए एक ActionListener जोड़ना होगा:

fileChooser.addActionListener(this); 
[...] 

public void actionPerformed(ActionEvent action) 
{ 
    if (action.getActionCommand().equals("CancelSelection")) 
    { 
     System.out.printf("CancelSelection\n"); 
     this.setVisible(false); 
     this.dispose(); 
    } 
    if (action.getActionCommand().equals("ApproveSelection")) 
    { 
     System.out.printf("ApproveSelection\n"); 
     this.setVisible(false); 
     this.dispose(); 
    } 
} 
2

जोहानिस के लिए: अपने उपयोगी टुकड़ा के लिए धन्यवाद।

"ApproveSelection" और के बजाय

"CancelSelection" मैं परिभाषित स्थिरांक JFileChooser.APPROVE_SELECTION और JFileChooser.CANCEL_SELECTION

इस्तेमाल किया