簡體   English   中英

在JFrame的中間結合JFileChooser

[英]Combine JFileChooser in the middle of JFrame

我正在用Java編寫一個微型程序,該程序將管理計算機中的文件。 我嘗試通過創建面板並將其放在框架的中間,將JFileChooser.showSaveDialog()置於框架的中間:

JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    panel.setPreferredSize(new Dimension(150,150) );

    JFileChooser chooseFile = new JFileChooser();
    chooseFile.showSaveDialog(panel);

    frame.getContentPane().add(BorderLayout.CENTER,panel);

    frame.setSize(400,400);
    frame.setVisible(true);

但是實際上,當執行showSaveDialog()命令時,該框架變得不可見。 我可以改變嗎?

不是JFrame不可見,而是它從未設置為可見 我假設您希望在調用showSaveDialog()時JFrame可見。 由於缺乏細節,這是我必須提供的:

    javax.swing.JFrame frame = new javax.swing.JFrame();
    frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

    javax.swing.JPanel panel = new javax.swing.JPanel();
    panel.setPreferredSize(new java.awt.Dimension(150,150) );

    javax.swing.JFileChooser chooseFile = new javax.swing.JFileChooser(); frame.getContentPane().add(java.awt.BorderLayout.CENTER,panel);

    frame.setSize(400,400);
    frame.setVisible(true);
    chooseFile.showSaveDialog(panel);



編輯:我重讀了您的問題,並認為您可能想將JFileChooser放在該問題的面板上是模棱兩可的。 您可能想要這樣:

    javax.swing.JFrame frame = new javax.swing.JFrame();
    frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    javax.swing.JPanel panel = new javax.swing.JPanel();
    panel.setPreferredSize(new java.awt.Dimension(150,150) );
    javax.swing.JFileChooser chooseFile = new javax.swing.JFileChooser(); frame.getContentPane().add(java.awt.BorderLayout.CENTER,panel);
    chooseFile.setPreferredSize(new java.awt.Dimension(400, 400));
    frame.setSize(400,440);
    frame.setVisible(true);
    panel.add(chooseFile);<br><br>

保存對話框FileChooser是模式對話框。 這意味着當我們調用chooseFile.showSaveDialog(panel); 文件對話框將成為焦點,並且用戶在關閉對話框之前無法與面板交互。 這通常是我們想要的行為。

如果我們要創建某種文件管理器,那么也許您想嘗試將JFileChooser添加到面板中。 由於JFileChooser擴展了組件,因此您可以執行此操作,但是它需要更多的代碼以及對swing的更多理解。 這樣的問題解決了向JPanel添加JFileChooser。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM