gpt4 book ai didi

java - JFileChooser 将无法正常工作

转载 作者:行者123 更新时间:2023-12-02 04:29:59 31 4
gpt4 key购买 nike

我正在使用 JFileChooser,我想让它在单击 fileItem1 时显示文件选择对话框。这是我的 SwingMenu 类。

问题:我在 showFileChooser 方法中遗漏/做错了什么?提前致谢。

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.io.File;
import java.awt.event.ActionListener;

/*
*This class encapsulates the build of the menu bar and is called from DrawPanelMain to add to the JFrame
*/
public class SwingMenu extends JMenuBar {

/*
* Initializes the JMenuItems that will be added to the menu. This is necessary for
* access by the ActionEvent handler. Also includes FileChooser that will be used for
* ActionEvent of clicking on fileItem1.
*/
private JMenuItem fileItem1 = null;
private JMenuItem fileItem2 = null;
private JMenuItem editItem1 = null;
private JMenuItem helpItem1 = null;
private JMenuItem toolsItem1 = null;

/*
* Create JFileChooser to be used in ActionEvent for click on fileItem1
*/
JFileChooser chooser = new JFileChooser("Desktop");

/*
*These will be the main items on the menuBar
*/
public SwingMenu(){initMenuBar();}

private void initMenuBar() {
/*
*Initializes for the main items on the menuBar
*/
JMenu fileMenu = new JMenu("File");
JMenu editMenu = new JMenu("Edit");
JMenu toolsMenu = new JMenu("Tools");
JMenu helpMenu = new JMenu("Help");

/*
*Initializes for the components of the main items
*/
JMenuItem fileItem1 = new JMenuItem("Open");
JMenuItem fileItem2 = new JMenuItem("Save");
JMenuItem editItem1 = new JMenuItem("Edit Configuration");
JMenuItem helpItem1 = new JMenuItem("User Manual");
JMenuItem toolsItem1 = new JMenuItem("Fetch Configuration");

/*
* Add action listener to fileItem1 for use in JFileChooser ActionEvent
*/
fileItem1.addActionListener(new ActionListener() {
public void showFileChooser (ActionEvent e){
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Directories and XML files", "xml");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String path = chooser.getSelectedFile().getAbsolutePath();
JOptionPane.showMessageDialog(null, "You selected" + path);
}
}
});

/*
*Each component is added to the assigned menu item
*/
fileMenu.add(fileItem1);
fileMenu.add(fileItem2);
editMenu.add(editItem1);
toolsMenu.add(toolsItem1);
helpMenu.add(helpItem1);

/*
*Menu items are added to the menuBar
*/
add(fileMenu);
add(editMenu);
add(toolsMenu);
add(helpMenu);
}
}

最佳答案

问题是这样的:public void showFileChooser (ActionEvent e){。在Java中,事件处理方法需要是public void actionPerformed(ActionEvent e) {:

                fileItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Directories and XML files", "xml");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String path = chooser.getSelectedFile().getAbsolutePath();
JOptionPane.showMessageDialog(null, "You selected" + path);
}
}
});

关于java - JFileChooser 将无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589377/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com