2016-03-04 3 views
0

Я только на 4-й день в java, поэтому я в значительной степени новичок. Я пытаюсь получить элементы Jlist для записи в текстовом файле, но не повезло. Это то, что я в настоящее время пытается:Невозможно получить элементы списка в txt-файле

public void actionPerformed(ActionEvent e) { 
      for (int j = 0 ; j<list.getItemCount() ; j++) 
      { 

       try { 
        File file = new File(listname + ".txt"); 
        FileWriter fileWriter = new FileWriter(file); 
        PrintWriter printWriter = new PrintWriter(fileWriter); 
        String email1 =list.getItem(j).toString(); 
        printWriter.print(email1); 
        printWriter.print("\n"); 
        fileWriter.flush(); 
        fileWriter.close(); 
       } catch (IOException l) { 
        l.printStackTrace(); 
       } 
      } 
     } 

Я получаю эту ошибку:

java.io.FileNotFoundException: javax.swing.JTextField[,823,7,210x20,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,bo[email protected]56d4941f,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=10,columnWidth=11,command=,horizontalAlignment=LEADING].txt (The filename, directory name, or volume label syntax is incorrect) 
at java.io.FileOutputStream.open0(Native Method) 
at java.io.FileOutputStream.open(FileOutputStream.java:270) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:213) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:162) 
at java.io.FileWriter.<init>(FileWriter.java:90) 
at com.example.tests.InstagramAievx$12.actionPerformed(InstagramAievx.java:343) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.AbstractButton.doClick(AbstractButton.java:376) 
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) 
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) 
at java.awt.Component.processMouseEvent(Component.java:6535) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
at java.awt.Component.processEvent(Component.java:6300) 
at java.awt.Container.processEvent(Container.java:2236) 
at java.awt.Component.dispatchEventImpl(Component.java:4891) 
at java.awt.Container.dispatchEventImpl(Container.java:2294) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
at java.awt.Container.dispatchEventImpl(Container.java:2280) 
at java.awt.Window.dispatchEventImpl(Window.java:2750) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
at java.awt.EventQueue$4.run(EventQueue.java:731) 
at java.awt.EventQueue$4.run(EventQueue.java:729) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

Когда я запускаю код с

printWriter.print("actual string"); 

Он работает. Однако, когда я пытаюсь поместить элементы Jlist. Любая помощь? Благодаря!

Обновление: Моя первая ошибка: listname.getText(), когда я ее исправил. Теперь он записывает файл, но он только записывает последний элемент, добавленный в список. Есть идеи??

+0

Ваша ошибка: '(имя файла, имени папки или синтаксис метки тома неправильно)' вы пытаетесь создать файл с содержимым вашего список. И он содержит недопустимые символы. –

+0

Я действительно забыл сделать 'listname.getText();' Я просто сделал это, и у меня возникла другая ошибка: «Исключение в потоке» AWT-EventQueue-0 »java.lang.ArrayIndexOutOfBoundsException: 2> = 2' @JorgeCampos @ Majora320 – AAlzaabi

+0

Откуда: имя пользователя? – Majora320

ответ

0

Вы переписываете файл для каждого элемента списка. Вы должны переместить открытия и закрытия файла вне цикла:

public void actionPerformed(ActionEvent e) { 
    try { 
     File file = new File(listname + ".txt"); 
     FileWriter fileWriter = new FileWriter(file); 
     PrintWriter printWriter = new PrintWriter(fileWriter); 
     for (int j = 0 ; j<list.getItemCount() ; j++) 
     { 
      String email1 =list.getItem(j).toString(); 
      printWriter.print(email1); 
      printWriter.print("\n"); 
     } 
     fileWriter.flush(); 
     fileWriter.close(); 
    } catch (IOException l) { 
    l.printStackTrace(); 
} 
+0

спасибо! Это решило мою проблему! Я знал, что это было что-то глупое. Ты лучший. – AAlzaabi

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