سؤال

وأنا أكتب برنامج جافا الذي يحتاج إلى فتح ملف الحوار. ملف الحوار المفتوح وليس من الصعب، وأنا يأملون في استخدام JFileChooser. مشكلتي هي أنني أود أن يكون JFrame جزء مزدوج (يتكون من 2 JPanels). ان اللوحة اليسرى لديهم JList، وسوف اللوحة اليمنى لديهم ملف الحوار المفتوح.

عند استخدام I JFileChooser.showOpenDialog() هذا يفتح مربع الحوار فوق كل النوافذ الأخرى، وهي ليست ما أريد. هل هناك أي طريقة لجعل JFileChooser (أو ربما الحوار اختيار ملف آخر) عرض داخل JPanel وليس المنبثقة فوقه؟

وهنا هو رمز التي حاولت، في هذه المرحلة انها مبسطة جدا. أنا أحاول فقط الحصول على JFileChooser لتكون جزءا لا يتجزأ في JPanel عند هذه النقطة.

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();
    }
}

ولقد حاولت أيضا يدعو chooser.showOpenDialog مع this وpanel، ولكن دون جدوى. أيضا، لقد حاولت إضافة JFileChooser مباشرة إلى الإطار. كل من المحاولات المذكورة أعلاه لا تزال لديها JFileChooser يطفو على السطح في الجبهة من الإطار أو لوحة (اعتمادا على I إضافة JFileChooser ل).

هل كانت مفيدة؟

المحلول

وJFileChooser يمتد JComponent ومكون لذلك ينبغي عليك أن تكون قادرا على إضافته مباشرة إلى الإطار الخاص بك.

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

نصائح أخرى

وللوصول إلى "أزرار" في منتقي الملف، سيكون لديك لإضافة 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();
    }
}

إذا كنت إضافة JFileChooser على الطاير، سوف تحتاج إلى استدعاء إعادة التحقق ().

والجواب ستيف هو الصحيح. يمكنك إضافة JFileChooser إلى حاويات أخرى.

ليوهانس: شكرا لقصاصة من المفيد بك

وبدلا من "ApproveSelection" و "CancelSelection" اعتدت على الثوابت المحددة JFileChooser.APPROVE_SELECTION وJFileChooser.CANCEL_SELECTION

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top