2014-03-25 8 views
0

jlist의 사용자 입력을 txt 파일로 저장하는 방법을 찾고 있습니다. 그것은 숙제 프로젝트를위한 것입니다. 필자는 텍스트 필드에서 사용자 입력을 받아들이도록 프로그램을 설정 한 다음 추가 버튼을 누르면 jlist로 이동합니다. jlist에는 defaultlist 모델이 있으며 저장 버튼을 만들고 완전한 jlist를 .txt 파일로 저장할 수 있는지 궁금합니다. 지금의 생성 및 오픈 파일이jList 데이터를 txt 파일에 저장하는 방법은 무엇입니까?

File file = new File("c:/test/myfile.txt"); 

에 목록을 저장하는 파일의 클래스를 사용할 필요가

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.DefaultListModel; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
import javax.swing.JButton; 
import javax.swing.JList; 
import javax.swing.border.LineBorder; 

import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 

import javax.swing.JComboBox; 
import javax.swing.JProgressBar; 
import javax.swing.JLabel; 


public class i extends JFrame { 

private JPanel contentPane; 
private JTextField jTextField; 
DefaultListModel ListModel = new DefaultListModel(); 
ArrayList<String> arr = new ArrayList <String>(); 
String str; 
/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       i frame = new i(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public i() { 
    super("List"); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    jTextField = new JTextField(); 
    jTextField.setBounds(15, 80, 168, 20); 
    contentPane.add(jTextField); 
    jTextField.setColumns(10); 

    final JList jList = new JList(ListModel); 
    jList.setBorder(new LineBorder(new Color(0, 0, 0))); 
    jList.setBounds(289, 54, 135, 197); 
    contentPane.add(jList); 


    JButton jButton = new JButton("Add"); 
    jButton.setBounds(190, 79, 89, 23); 
    contentPane.add(jButton); 
    jButton.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) { 
      String str=jTextField.getText(); 
      ListModel.addElement(str); 
      jTextField.setText(""); 
      arr.add(str); 
      System.out.println(arr); 
     } 
    }); 



    JButton delete = new JButton("DELETE"); 
    delete.setBounds(190, 162, 89, 23); 
    contentPane.add(delete); 
    delete.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent k){ 
      ListModel.removeElement(jList.getSelectedValue()); 

     } 
    }); 

    JButton btnUp = new JButton("UP"); 
    btnUp.setBounds(190, 125, 89, 23); 
    contentPane.add(btnUp); 
    btnUp.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      int index = jList.getSelectedIndex(); 
      if(index == -1){ 
       JOptionPane.showMessageDialog(null, "Select something to move."); 
      } else if(index > 0) { 
       String temp = (String)ListModel.remove(index); 
       ListModel.add(index - 1, temp); 
       jList.setSelectedIndex(index -1); 
      } 
     } 
    }); 

    JButton btnDown = new JButton("DOWN"); 
    btnDown.setBounds(190, 196, 89, 23); 
    contentPane.add(btnDown); 
    btnDown.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      int index = jList.getSelectedIndex(); 
      if(index == -1) 
       JOptionPane.showMessageDialog(null, "Select something to move."); 
      else if(index < ListModel.size() - 1){ 
       String temp = (String)ListModel.remove(index); 
       ListModel.add(index + 1, temp); 
       jList.setSelectedIndex(index + 1); 
      } 
     } 
    }); 

    JLabel lblItems = new JLabel("Items:"); 
    lblItems.setBounds(290, 37, 46, 14); 
    contentPane.add(lblItems); 

    JButton btnPrint = new JButton("PRINT"); 
    btnPrint.setBounds(190, 228, 89, 23); 
    contentPane.add(btnPrint); 
    btnPrint.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 

     } 
    }); 
} 
} 
+0

이 질문은 너무 광범위합니다. 이게 너를 괴롭히는 부분 이니? 버튼 만들기? 단추에 ActionListener 추가? JList에서 데이터 가져 오기? 데이터를 텍스트 파일에 저장 하시겠습니까? 다른 것? 지금까지 뭐 해봤 어? 귀하의 [MCVE] (http://stackoverflow.com/help/mcve)는 어디에 있습니까? –

+0

@KevinWorkman 사과드립니다. jlist에서 데이터를 가져 와서 텍스트 파일로 가져 오는 방법을 알아 내는데 어려움이 있습니다. 나는 다른 웹 사이트 및 다른 질문을보고 행운이 없었다. – engz

+0

작은 단계로 문제를 해결하십시오. 하드 코드 된 문자열을 파일에 쓰는 독립 실행 형 프로그램을 작성할 수 있습니까? JList의 내용을 콘솔에 출력하는 다른 독립 실행 형 프로그램을 작성할 수 있습니까? 두 프로그램이 따로 작동하면 프로그램을 결합하는 방법에 대해 생각할 수 있습니다. 전체 목표에 대해 게시하는 것보다 특정 단계에 대해 게시하는 것이 더 좋습니다. –

답변

0

:

또한, 여기에 내 코드입니다! 및 쓰기에 대한 몇 가지 출력이

사용 포맷터 클래스 파일에 : 당신이 볼로

public class CreateFile 
{ 
    private Formatter x; 
    void openFile() 
    { 
    try 
    { 
     x = new Formatter("c:/myfile.txt"); 
     System.out.println("you created a file"); 
    } 
    catch(Exception e) 
    { 
     System.err.println("error in opening file"); 
    } 
    } 
    void addFile() 
    { 
     x.format("%s %s %s\n","20","Start","Today"); 
    } 
    void closeFile() 
    { 
     x.close(); 
    } 
} 

, addFile 방법은 내가 "20", "시작"전달 된 파일 에 쓰기에 전달 3 문자열을 받아들이을 " 오늘 " % /보다 작음을 사용할 수 있으며 사용자 입력 또는 문자열을 사용하여 파일에 쓸 수 있습니다. 행운을 빌어 요