java如何在菜单项单击时从目录加载下一项?
嗨,我正试图从所选目录中逐个提取项目,但问题是,当我单击“下一步”菜单项时,所有项目都从目录中汇集到一起。 我已将actionlistener放在菜单项单击中,并尝试在字符串变量中逐个存储项并在控制台上打印,但每次所有项都会加载我必须执行的操作
我的代码:
final JFileChooser file;
file = new JFileChooser();
file.showOpenDialog(contentPane);
mnLoadDirectory.add(mntmSelectDir);
File[] filesInDirectory = file.getCurrentDirectory().listFiles();
String FileNames;
//int i=1;
JMenuItem mntmNextItem = new JMenuItem("Next Item");
for (int i = 0; i < filesInDirectory.length; i++)
{
if (filesInDirectory[i].isFile())
{
FileNames = filesInDirectory[i].getName();
if (FileNames.endsWith(".jpg") || FileNames.endsWith(".JPG"))
{
System.out.println(FileNames);
}
}
}
mntmNextItem.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
}
});
mnLoadDirectory.add(mntmNextItem);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
我没有把所有的代码都放进去,我只放了一个与这个相关的代码
有什么建议吗强>
# 1 楼答案
将文件内容读入
List
或数组。维护某种指向当前元素的int
值,如图所示准备移动到下一个元素时,增加
int
值,执行适当的边缘检查,并根据需要更新显示用简单示例更新
这是一个基本的例子。它将指定目录扫描到
List
中,并维护当前文件的int
索引当操作
next
菜单项时,它简单地增加int
索引值并更新显示# 2 楼答案
要从操作侦听器内部访问filesInDirectory,您需要将其声明为final
您所做的是迭代所有文件并打印出文件名,看起来您希望将for循环移动到动作侦听器中并添加一个中断。所以你会有类似的东西