1

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

4 に答える 4

2

参照しているディレクトリ内の画像を列挙する必要があります。ユーザーがファイルを選択するとき、ユーザーが次のボタンをクリックしたときにそれらを取得するために、そのディレクトリからすべての画像のリストを保持する必要があります。同様に、ユーザーが次のボタンをクリックするたびにファイル リストを取得できます。

于 2012-06-05T12:34:09.267 に答える
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;
}
于 2012-06-05T12:48:24.870 に答える
0
  • 現在の画像の場合は親ファイルを取得します ( File.getParent())。
  • いずれかのFile.list..()方法を使用して、イメージ ファイルを取得します。
  • ユーザーの「次」を意味する順序に並べ替えます。
  • 現在の接続が見つかるまでその接続を繰り返し、Fileその後次の接続を表示します。
于 2012-06-05T12:35:19.987 に答える
0

可能であれば、最初のコードの抜粋で選択したのと同じディレクトリに、次の画像が必要であると想定しています。ユーザーが画像を選択したら、Apache のFileUtilsを使用してファイルの拡張子を取得できます。ファイルが 、JPGJPEGなどのPNG場合、その場所を文字列のリストにロードできます。

これにより、画像パスのリストが表示されます。その後、ボタンを使用してリストをトラバースできます。ボタンを押すと、次の項目に移動し、画像を読み込んでレンダリングします。

編集:これは私がそれを段階的に進める方法です:

  1. List 型のグローバル変数を作成します。
  2. カウンターとして機能するグローバル変数を作成します。
  3. あなたのjButton1ActionPerformed方法では:
    • ユーザーが選択したファイルの親ディレクトリを取得します。
    • FileUtilファイル名の拡張子を取得するには、Apache のクラスを使用します。ファイル名が 、 などの画像の場合は、PNGそれJPG(そのファイルのパス) をリストに追加します。
  4. youjButton2ActionPerformedで、カウンターをインクリメントし (カウンターがリストのサイズよりも小さくない場合は、を回避するために 0 に再初期化しますOutOfBoundsExceptions)、メソッドと同様のロジックを使用して、カウンターによって示されるファイルを読み込みますjButton1ActionPerformed
于 2012-06-05T12:34:25.110 に答える