2012-05-15 2 views
2

JList과 관련하여 도움이 필요합니다. 목록에 텍스트 파일을 추가해야하지만, TXT 파일로 library.txt 이름 : JList에 txt 파일의 특정 단어를 채우는 방법

title1 author1 description1 publisher1 
title2 author2 description2 publisher2 
title3 author3 description3 publisher3 
title4 author4 description4 publisher4 

은 무엇 프로그램 할 필요가

사용자 목록 프로그램에서 특정 제목을 선택 TXT 때부터 타이틀리스트 을 채우기 위해입니다 설명을 JTextArea에 써야합니다.

이것은 내가 지금까지 얻은 것입니다.

import java.awt.FlowLayout; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.DefaultListModel; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JTextArea; 

public class Library extends JFrame { 

    private JList lista; 
    private JTextArea tekst; 
    DefaultListModel model; 

    public Library() { 
     super("Biblioteka"); 
     this.setSize(300, 300); 
     setLayout(new FlowLayout()); 
     model = new DefaultListModel(); 
     lista = new JList(model); 
     add(lista); 
     tekst = new JTextArea(20, 20); 
     add(tekst); 
     File fajl = new File("library.txt"); 
     BufferedReader ulaz = null; 
     try { 
      FileReader fr = new FileReader(fajl); 
      ulaz = new BufferedReader(fr); 
      String linija; 
      try { 
       while ((linija = ulaz.readLine()) != null) { 
        //lista.add(linija); 
        //System.out.println(linija); 
        String[] reci = linija.split("\t"); 
        String naslovi = null; 
        for (int i = 0; i < reci.length; i++) { 
         naslovi = reci[0]; 
        } 
        int pos = lista.getModel().getSize(); 
        model.addElement(naslovi.toString()); 
       } 
      } catch (IOException ex) { 
       Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    public static void main(String[] args) { 
     Library l = new Library(); 
     l.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     l.setSize(300, 430); 
     l.setVisible(true); 
    } 
} 
+3

1) * "지금까지 얻은 것입니다."* 코드 블록에 대해 논리적이고 일관된 들여 쓰기를 사용하십시오. 그 코드는 네 개가 쓴 것처럼 읽는다. 나는 개를 좋아하지 만 코드를 디버깅하지는 않습니다. 2) 게시하기 전에 게시물 미리보기를주의 깊게 검토하십시오. 그것은 내가 정돈해야하고, 더 나은 일을해야합니다. 3) POJO를 만들어서'Book'을 표현하고'Book' 인스턴스를 목록에 넣으십시오. 렌더러를 사용하여 필요에 따라 렌더러를 표시합니다. 이 옵션을 선택하면 객체를 사용하여 GUI의 나머지 부분에 세부 사항을 표시합니다. 4) 3.하는 것은 질문을 불필요하게 만듭니다. –

+2

5) EDT에서 스윙 코드를 실행해야합니다. 6) 그리고 귀하의 질문은 정확히 무엇입니까? 우리는 진행중인 작업을 보여 주지만 어디서 붙어 있는지 언급하는 것을 잊지 마십시오. – Robin

답변

0

앤드류는 자신의 의견에서 언급 한 바와 같이 그 다음 ListCellRenderer 만 표시 그런

while ((linija = ulaz.readLine()) != null) { 
    String[] reci = linija.split("\t"); 

    for (int i = 0; i < reci.length; i++) { 
     Book book = new Book(); 
     book.title = reci[0]; 
     book.description = reci[2]; 
     /* other stuff here */ 
     model.addElement(book); 
    } 
} 

를 사용하여 유사한 루프를 다시 작성

class Book { 
    String title; 
    String author; 
    String description: 
    /* other fields*/ 
} 

같은 POJO (일반 오래된 자바 객체)를 사용 ListListSelectionListener의 제목은 이에 따라 텍스트 영역을 청취하고 업데이트합니다.

관련 문제