我正在用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()命令发生时,框架变得不可见。 我可以改变吗?
答案 0 :(得分:1)
并不是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>
答案 1 :(得分:0)
保存对话框FileChooser是一个模态对话框。这意味着当我们调用chooseFile.showSaveDialog(panel);
时,文件对话框将获得焦点,并且在关闭对话框之前用户无法与面板交互。这通常是我们想要的行为。
如果我们想创建某种文件管理器,那么您可能想尝试将JFileChooser添加到面板中。由于JFileChooser扩展了组件,你可以这样做,但它需要更多的代码和更多的了解swing。这个SO question地址将JFileChooser添加到JPanel。