Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入和读取.txt文件,listselectionlistener_Java_Actionlistener_Jlist_Listselectionlistener - Fatal编程技术网

Java 写入和读取.txt文件,listselectionlistener

Java 写入和读取.txt文件,listselectionlistener,java,actionlistener,jlist,listselectionlistener,Java,Actionlistener,Jlist,Listselectionlistener,我需要一些帮助,让这个程序将JList元素信息写入.txt文件,然后将.txt文件的内容输出到文本区域,而不是将JList元素信息直接输出到文本区域 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.io.*; import java.lang.System.*; public class ListModel extends JF

我需要一些帮助,让这个程序将
JList
元素信息写入
.txt
文件,然后将
.txt
文件的内容输出到文本区域,而不是将
JList
元素信息直接输出到文本区域

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.lang.System.*;

  public class ListModel extends JFrame {

   private JList list;
   private DefaultListModel model;
   private JTextField inputf;
   private JTextField inpute;
   private JTextArea text;
   private JPanel p1;
   private JPanel p2;
   private ListSelectionModel ListSelectionModel;

    public ListModel() {
      setLayout(new FlowLayout());
      DefaultListModel model = new DefaultListModel();
      list = new JList(model);

      JButton addButton = new JButton( "Lägg till" );
      model.addElement("Kajsa Åslund");
      model.addElement("Erik Carlsson");
      model.addElement("John Åkesson");
      model.addElement("Per-arne Ingvarsson");
      model.addElement("Rebecka Asp");
      model.addElement("Linnéa Åslund");
      model.addElement("Åsa-Nisse Strong");
      model.addElement("Super Lasse");
      model.addElement("Alexander Ahl");
      model.addElement("Ann Ahl");
      model.addElement("Bo Sten");
     addButton.addActionListener(
     new ActionListener() {
        public void actionPerformed( ActionEvent event )
                     {
                     final String name=inputf.getText() + " " + inpute.getText();

                     model.addElement( name );
                 }
             }
             );
     JButton removeButton =
     new JButton( "Ta bort" );

     removeButton.addActionListener(
     new ActionListener() {

         public void actionPerformed( ActionEvent event )
             {
             setTitle("Borttagning");
             try
            {
            Thread.sleep(1000);
            }
            catch(InterruptedException e)
            {
            e.printStackTrace();
            }
             model.removeElement(list.getSelectedValue());
             setTitle("Personer");
         }
     }
     );
     text = new JTextArea(5, 20);
     text.setEditable(false);

     inputf = new JTextField();
     inputf.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }

    });
     inpute = new JTextField();
     inpute.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }

    });

     list.setModel(model);
     list.getSelectionModel().addListSelectionListener(new             ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e) {
            text.setText(list.getSelectedValue().toString());
        }
     });

     inpute.setBounds(5, 5, 100, 100);
     inpute.setPreferredSize(new Dimension(120,20));
     inputf.setBounds(10, 10, 150, 150);
     inputf.setPreferredSize(new Dimension(120,20));
     JScrollPane scroll = new JScrollPane(list);
     scroll.setPreferredSize(new Dimension(200,200));

     JPanel p2 = new JPanel();
     p2.add(text);
     p2.add(inputf);
     p2.add(inpute);
     p2.add(addButton);
     p2.add(removeButton);
     p2.setLayout(new BoxLayout(p2,BoxLayout.Y_AXIS));

     JPanel p1 = new JPanel();
     p1.add(scroll);


     Container container = getContentPane();
     container.add(p1);
     container.add(p2);
     container.setLayout(new FlowLayout());

     setDefaultCloseOperation( EXIT_ON_CLOSE );
     setSize( 500, 250 );
     setVisible( true );
 }

   public static void main( String args[] )
         {
         new ListModel();
     }
}

提前感谢!:)

您可以使用基本java I/O API之一的
BufferedWriter()
BufferedReader()
来实现这一点,您可以阅读它们。学会使用它是值得的

要将
model
的内容写入.txt文件,可以使用循环,如下所示:

for(Object string : model.toArray()){
   out.write(t + "\n");    // "out" is BufferedWriter object
}
toArray()
将采用数据形式
model
,并将其存储在
对象[]
数组中。然后,您可以为每个循环使用
提取它,并写入文件。
这将把
模型
内容打印为.txt文件中的列表,一行一个名称

然后,您可以使用
BufferedReader()
,一行接一行地读取它,将一行添加到
JTextArea

顺便说一句。我认为你的ramove选项并没有发挥应有的作用。这是因为,您需要选择一个项目来删除它。但当您选择它时,
ListSelectionListener()
尝试读取数据表单列表,并在删除该项时抛出
NullPointerException()
。事实上,它表现得很古怪。要修复它,只需修改
valueChanged()


它将从列表中读取数据,只是它不是
null
(换句话说已删除)。

或者这是可能的吗?但如何将缓冲写入器和读取器放入listselectionlistener?我想这就是我必须要做的,因为每次突出显示新元素时都必须重复这个过程。抱歉,如果这些都是愚蠢的问题,我对编程还比较陌生。但我真的很感谢你给我的帮助:)也许你理解了我最初的要求,也许我是这里的错,也许我误解了你写的东西。但是您所描述的不是从.txt文件向列表中添加了数据吗?因为我的目标是将列表中的数据添加到.txt文件中,然后将.txt文件中的数据输出到文本区域,并将文本文件中的数据保存到中。@AntonMehlqvist你完全正确,我的错误。但是我知道你想要一个保存/加载选项,那么你的目标是什么呢?您想在每次选择某个元素时将一个选定的列表元素写入文件,然后将一个元素检索到JTextArea吗?或者您想让文件中的所有字符串显示在JTextArea上?请你再详细说明一下好吗?
public void valueChanged(ListSelectionEvent e) {
    if(list.getSelectedValue()!=null) text.setText(list.getSelectedValue().toString());
}