JFileChooser جزءا لا يتجزأ من JPanel
-
06-07-2019 - |
سؤال
وأنا أكتب برنامج جافا الذي يحتاج إلى فتح ملف الحوار. ملف الحوار المفتوح وليس من الصعب، وأنا يأملون في استخدام 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