Java - 如何通过按下按钮获取下一个图像

时间:2012-06-05 12:29:54

标签: java image button next

我设法在netbeans中将图像添加到JPanel中并显示它。我想知道如何通过按下按钮进入下一个。

我使用此代码添加了图片:

private void jButton1ActionPerformed(java.awt.event.ActionEvent  evt){                                         
    // TODO add your handling code here:
    JFileChooser fileChooser = new JFileChooser();
    int result = fileChooser.showOpenDialog(null);
    if ( result == JFileChooser.APPROVE_OPTION ){
         String Ruta = fileChooser.getSelectedFile().getAbsolutePath();
         jTextField1.setText(Ruta);
         Icon icon = new ImageIcon(Ruta);
         jLabel2.setIcon(icon);
         JOptionPane.showMessageDialog(this,"You chose to open this file: " + 
                    fileChooser.getSelectedFile().getName());  
    } 
}

当我按下一个名为“jButton2”的按钮来获取下一张图像时,无需再次从文件夹中手动选择它。

例如:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                         
     // TODO add your handling code here:       
} 

非常感谢你。

4 个答案:

答案 0 :(得分:2)

您必须枚举您正在浏览的目录中的图像。当用户选择文件时,您应该保留该目录中所有图像的列表,以便在用户单击下一个按钮时检索它们。您也可以在用户单击下一个按钮时获取文件列表。

答案 1 :(得分:1)

可能是这样的:

private File allFiles;
private int currentIndex;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    JFileChooser fileChooser = new JFileChooser();
    int result = fileChooser.showOpenDialog(null);
    if ( result == JFileChooser.APPROVE_OPTION ){
            currentFile = fileChooser.getSelectedFile();
            String Ruta = currentFile.getAbsolutePath();
            jTextField1.setText(Ruta);
            allFiles = currentFile.getParent().listFiles(); // maybe you need a filter to include image files only....

            currentIndex = indexOf(allFiles, currentFile);

           Icon icon = new ImageIcon(Ruta);
                jLabel2.setIcon(icon);
                JOptionPane.showMessageDialog(this,"You chose to open this file: " + fileChooser.getSelectedFile().getName());  
    }

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    if (currentIndex+1 < allFiles.length) {
        jtextField1.setText(allFiles[++currentIndex]);
    }
}

private int indexOf(File[] files, File f) {
    for (int i=0; i+1 < files.length; i++)  {
       if (files[i].equals(f)) {
          return i;
       } 
    }
    return -1;
}

答案 2 :(得分:0)

我假设您想要下一张图片,如果可能的话,请在您在第一个代码摘录中选择的同一目录中。您可以做的是,一旦用户选择了图像,您就可以使用Apache的FileUtils来获取文件的扩展名。如果文件是JPGJPEGPNG等,您可以在字符串列表中加载它的位置。

这将为您提供图片路径列表。然后,您可以使用按钮遍历列表。按下按钮后,您将移动到下一个项目,加载图像并进行渲染。

编辑:这就是我将如何逐步实现的目标:

  1. 创建List类型的全局变量。
  2. 创建一个充当计数器的全局变量;
  3. 在您的jButton1ActionPerformed方法中:
    • 获取用户选择的文件的父目录;
    • 使用Apache的FileUtil类获取文件名的扩展名。如果文件名是图像,例如PNGJPG等,请将其(该文件的路径)添加到列表中。
  4. 在你jButton2ActionPerformed中,递增计数器(如果计数器不小于列表的大小,重新初始化为0,以避免OutOfBoundsExceptions)并加载文件由计数器表示,使用与jButton1ActionPerformed方法类似的逻辑。

答案 3 :(得分:0)

  • 获取当前图像(File.getParent())的父文件。
  • 使用其中一种File.list..()方法获取图像文件。
  • 将它们分类为某个用户“接下来”的顺序。
  • 迭代该连接,直到找到当前File,然后显示下一个连接。