我正在制作一个文件打开向导,并且 JFileChooser 是从初始窗口上的浏览按钮打开的。我目前已将其设置为浏览按钮处理第一个窗口并同时打开 JFileChooser 窗口。我宁愿在用户选择文件后处理该窗口,以防他们想要取消并返回到初始窗口 - 目前这是不可能的。
相关代码如下:
class BrowseButton extends JButton {
public BrowseButton(String name, final JPanel pane) {
super(name);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("dwg files", "dwg");
fileopen.addChoosableFileFilter(filter);
int ret = fileopen.showDialog(pane, "Open");
if (ret == JFileChooser.APPROVE_OPTION) {
File file = fileopen.getSelectedFile();
String[] layers = getFileLayers(file.getPath());
openLayerWindow(layers);
}
}
});
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
dispose();
}
});
}
当按钮被实例化时......
//Bottom Panel
final JPanel bottom = new JPanel(new FlowLayout(FlowLayout.RIGHT));
BrowseButton browse = new BrowseButton("Browse...", bottom);
browse.setMnemonic(KeyEvent.VK_B);
CloseButton close = new CloseButton("Close");
close.setMnemonic(KeyEvent.VK_C);
bottom.add(close);
bottom.add(browse);
basic.add(bottom);
最佳答案
您可以利用 SwingUtilities.getWindowAncestor
检索 BrowseButton
的包含窗口,并仅在用户选择 APPROVE_OPTION
时才将其处置.
class BrowseButton extends JButton {
public BrowseButton(String name, final JPanel pane) {
super(name);
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser fileopen = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("dwg files", "dwg");
fileopen.addChoosableFileFilter(filter);
int ret = fileopen.showDialog(pane, "Open");
if (ret == JFileChooser.APPROVE_OPTION) {
SwingUtilities.getWindowAncestor(BrowsButton.this).dispose();
File file = fileopen.getSelectedFile();
String[] layers = getFileLayers(file.getPath());
openLayerWindow(layers);
}
}
});
}
关于java - 从 JFileChooser 打开按钮关闭上一个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531702/