final JFileChooser chooser = new JFileChooser();
JOptionPane.showInternalOptionDialog(this, chooser, "Browse",
JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
new Object[]{}, null);
chooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION))
System.out.println("File selected: " +
chooser.getSelectedFile());
//code to close here
} else {
//code to close here
}
}
});
这段代码看起来很奇怪,但它只是我程序的一部分。我使用全屏GraphicsDevice
。我将文件选择器放在内部 JOptionPane 中以保留我的全屏窗口。现在我想以编程方式关闭 JOptionPane 内部本身而不关闭我的actionlistener中的整个应用程序。怎么办呢?
答案 0 :(得分:0)
调用showInternalOptionDialog时,无法轻松访问对话框的引用。你可以添加选项,即。使用
new Object[] { "Browse", "Cancel" }
而不是
new Object[]{}
然后你最终会有两组按钮。我认为没有简单的方法可以将showInternalOptionDialog与JFileChooser一起使用。我建议你自己创建JInternalFrame。
final JFileChooser chooser = new JFileChooser();
JOptionPane pane = new JOptionPane(chooser, JOptionPane.PLAIN_MESSAGE,
JOptionPane.DEFAULT_OPTION, null, new Object[0], null);
final JInternalFrame dialog = pane.createInternalFrame(this, "Dialog Frame");
chooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
System.out.println("File selected: "
+ chooser.getSelectedFile());
}
dialog.setVisible(false);
}
});
dialog.setVisible(true);
同样在您的代码段中,您将在showInternalOptionDialog之后调用addActionListener。只有在关闭对话框后,showInternalOptionDialog调用才会返回,因此ActionListener的创建时间太晚。您需要首先添加addActionListener然后显示对话框。