2012-05-02 18 views
1

以下のコードを使用してJFileChooser経由でJListにtest.xmlという名前のファイルを追加しました。JListから選択したファイルを取得する方法

for (File file : fileChooser.getSelectedFiles()) { 
    vector.addElement(file); 
} 
System.out.println("Added..!!"); 
list.updateUI(); 

これで、Jlistからファイルを選択し、別のドキュメントに変換する必要があります。変換のステップは、私が入力として与える場合に機能します。

File file = new File("test.xml"); 

ただし、これを指定しても機能しません。

    vector = new Vector<File>(); 
       final JList list = new JList(vector);  
       scrollPane.setViewportView(list);" 

は、あなたがたのうち、私が行うためにJListのからそのparticulaファイルを選択しない方法を教えてくださいすることができます

for (int j : list.getSelectedIndices()) { 
    File file = vector.elementAt(j); 
    //-------code for conversion-------// 
} 

リストとそのベクトルは、次のコードを使用して作成されています変換? あらかじめThanxで..!

+0

@GuillaumePoletを動作することを示している:私は\t \t「ベクターを使用して私のリストやベクトルを作成する=新しいベクター(); \t \t最終JListのリスト=新しいJListの(ベクトル); \t \t scrollPane.setViewportView(list); " – dmurali

+0

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

私はjlistとvector(defaultListModelの代わりに)を作る詳細を追加して私のコードを編集しました。 – dmurali

答えて

4

JListは方法

public Object getSelectedValue() 
public Object[] getSelectedValues() 

は私がStanislavLするか、あなたのコードを使用することによって示唆されたコードのいずれかで全く問題がないファイル

+0

ありがとうございますが、これは私の目的を解決しません。たとえば、 'test.xml'のような特定のファイルを変換する必要があるため、関数 "vector.elementAt(j)"を使用する必要があります。 – dmurali

+1

@dmurali:getSelectedValue()はすでに変換するFileインスタンスを返します。ベクトルのインデックスも知っている必要がある場合は、VectorメソッドindexOf http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html#indexOf%28java.langを使用できます。 Object、%20int%29 –

+0

trueですが、次のステップでは、 "Document doc = docBuilder.parse(file)"を使用してファイル(test.xml)を解析しなければなりません。 else。 – dmurali

4

を得るためにそれらを使用しています。あなたのコードには、あなたが私たちを見せていない何か他のものがなければなりません。ここSSCCEは、それが

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.util.Vector; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

public class Test { 

    public static void main(String... args) { 
     JFrame frame = new JFrame(); 
     final Vector<File> files = new Vector<File>(); 
     final JList list = new JList(files); 
     list.setVisibleRowCount(5); 
     final JButton selectFile = new JButton("Select file..."); 
     selectFile.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       JFileChooser fileChooser = new JFileChooser(); 
       fileChooser.setMultiSelectionEnabled(true); 
       fileChooser.showOpenDialog(selectFile); 
       if (fileChooser.getSelectedFiles() != null) { 
        for (File file : fileChooser.getSelectedFiles()) { 
         files.add(file); 
        } 
        list.updateUI(); 
       } 

      } 
     }); 
     final JButton click = new JButton("Click me"); 
     click.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       StringBuilder sb = new StringBuilder("The following files are selected in the list:\n"); 
       /*for (Object o : list.getSelectedValues()) { 
        sb.append(((File) o).getAbsolutePath()).append('\n'); 
       }*/ 
       for (int i : list.getSelectedIndices()) { 
        sb.append(files.get(i).getAbsolutePath()).append('\n'); 
       } 
       JOptionPane.showMessageDialog(click, sb.toString()); 
      } 
     }); 
     JPanel panel = new JPanel(new BorderLayout()); 
     panel.add(selectFile, BorderLayout.WEST); 
     panel.add(click, BorderLayout.EAST); 
     JScrollPane scrollPane = new JScrollPane(list); 
     panel.add(scrollPane); 
     frame.getContentPane().add(panel); 
     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
関連する問題