2015-05-31 3 views
2

Я знаю, что это вопрос новичка, но он не работает. Вот кодРекурсивно добавить данные ArrayList в JTable

public void imageshow(String path) throws IOException { 
    File root = new File(path); 
    File[] list = root.listFiles(); 
    if (list == null) return; 

    for (File f : list) { 
     imageshow(f.getAbsolutePath()); 

     if(f.getName().endsWith("jpg")||f.getName().endsWith("png")||f.getName().endsWith("gif")||f.getName().endsWith("tif")) 
       { 
       images=new ArrayList<String>(); 
       DefaultTableModel model=new DefaultTableModel(); 
    model.addColumn("Imya"); 

    table.setModel(model); 
       model.addRow(new Vector(images)); 
       images.add(f.getName()); 
       image_count++; 
       for(String img:images) 
       { 
        System.out.println(img); 
       } 
      } 
     } 
    } 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    DirectoryReader fw = new DirectoryReader(); 
    System.out.println("---Images----"); 

    try { 
     fw.imageshow("D:\\Installs\\shohruh\\doc"); 
    } catch (IOException ex) { 
     Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

Итак, я хочу, чтобы при нажатии кнопки он должен рекурсивно добавлять в JTable. Какие детали я пропустил? Логически, я написал код правильно. Но я не показываюсь на JTable! Пожалуйста, помогите устранить эту проблему. Заранее спасибо

+1

Единственная пустая строка пробела в исходном коде - это все, что вам нужно. Пустые строки после '{' или before '}' также типично избыточны. –

ответ

1

Может быть из-за инициализации ArrayList в каждом цикле:

images=new ArrayList<String>(); 

Если вы хотите использовать рекурсивный alogrithm, вы должны поместить это вне рекурсивного метода (как переменный экземпляра или что-то). Тогда, есть утверждение:

model.addRow(new Vector(images)); 

но список изображений по-прежнему пуст


EDIT

private DefaultTableModel model=new DefaultTableModel(); 
private ArrayList<ArrayList<String>> image=new ArrayList<ArrayList<String>>(); 
public void imageshow(String path) throws IOException { 
File root = new File(path); 
File[] list = root.listFiles(); 

if (list == null) return; 

for (File f : list) { 
    imageshow(f.getAbsolutePath()); 

    if(f.getName().endsWith("jpg")||f.getName().endsWith("png")||f.getName().endsWith("gif")||f.getName().endsWith("tif")) 
      { 
      ArrayList<String> row = new ArrayList<String>(); 
      row.add(f.getName()); 
      images.add(row); 
      image_count++; 
     } 
    } 
} 

И когда вы звоните:

model.addColumn("Imya"); 
table.setModel(model); 
for(ArrayList<String> list:images) 
    model.addRow(new Vector(list)); 

Не тестировался


EDIT - целое код:

private DefaultTableModel model=new DefaultTableModel(); 
private ArrayList<ArrayList<String>> image=new ArrayList<ArrayList<String>>(); 
public void imageshow(String path) throws IOException { 
    File root = new File(path); 
    File[] list = root.listFiles(); 
    if (list == null) return; 
    for (File f : list) { 
     imageshow(f.getAbsolutePath()); 
     if(f.getName().endsWith("jpg")||f.getName().endsWith("png")||f.getName().endsWith("gif")||f.getName().endsWith("tif")) 
      { 
      ArrayList<String> row = new ArrayList<String>(); 
      row.add(f.getName()); 
      images.add(row); 
      image_count++; 
     } 
    } 
} 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ 
    DirectoryReader fw = new DirectoryReader(); 
    images.clear(); 
    System.out.println("---Images----"); 
    try { 
     fw.imageshow("D:\\Installs\\shohruh\\doc"); 
    } catch (IOException ex) { 
     Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    model.addColumn("Imya"); 
    table.setModel(model); 
    for(ArrayList<String> list:images) 
     model.addRow(new Vector(list)); 
} 

Не хорошо отформатированный и не тестируется, написанный JavaDoc

2

пример кода для вас.

String[] usernames = new String[]{"dev","root","developer","lastroot"}; 

      Collections.reverse(Arrays.asList(usernames)); 
      jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(usernames)); 

защелкивается перед использованием

Collections.reverse(Arrays.asList(usernames)); 

enter image description here

- шнапс После использования

Collections.reverse(Arrays.asList(usernames)); 

enter image description here

Надежда это ма я работаю для вас.

+0

Сэр, Спасибо за помощь. Но он все еще не работал !!! – Mike

+0

k.may вы показываете мне код, что вы пробовали. – bajrangi

+0

Хорошо, сэр здесь ссылка: https://www.hightail.com/download/bXBiS3dxZy9CSnJOTzhUQw – Mike

Смежные вопросы