2017-03-16 6 views
0

HttpURLConnection을 사용하여 서버에서 파일을 다운로드하고이 파일의 내용으로 ListView를 채 웁니다. 파일의 내용은 name1 # name2 # name ...과 같습니다. 새 스레드로 다운로드 한 다음 배열로 분할하지만 이 배열의 ListView를 채울 수없는 경우, 잘못된 스레드에서 ListView에 내용을 추가하려는URL의 데이터로 javaFX의 ListView를 채우는 방법은 무엇입니까?

package miz.bjcodes; 

import java.io.*; 
import java.net.*; 
import java.util.*; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.*; 
import javax.swing.JOptionPane; 

public class FXMLDocumentController implements Initializable { 
    private static String url = "http://127.0.0.1:8888//bjcodes//"; 
    @FXML private ListView lv; 
    @FXML private TextArea ta; 

    @FXML 
    private void btn1click(ActionEvent event){ 
     new Thread(new Runnable(){ 
      @Override 
      public void run(){ 
       try{ 
        URL u = new URL(url + "listjava.txt"); 
        HttpURLConnection con = (HttpURLConnection) u.openConnection(Proxy.NO_PROXY); 
        con.setUseCaches(false); 
        con.setDoInput(true); 
        con.connect(); 
        String st; 
        BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8")); 
        st = br.readLine(); 
        br.close();con.disconnect(); 
        System.out.println(st); 
        String[] ss = st.split("#",-1); 
        loadList(ss); 
       } 
       catch(Exception ex){} 
      } 
     }).start(); 
    } 

    private void loadList(String[] ss){ 
     for(String str : ss){ 
      lv.getItems().add(str); 
     } 
    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

    }  

} 

답변

2

(단지 첫 번째 요소는 목록보기 및 기타 요소가 표시되지 간다). 현재보기 에 대한 모든 변경은 Java FX 응용 프로그램 스레드에서 수행해야합니다. JDK 버전 1.7에서

private void loadList(String[] ss) { 
    final ObservableList<String> list = FXCollections.observableArrayList(ss); 
    Platform.runLater(() -> { 
     lv.setItems(list); 
    }); 
} 
+0

내가 그랬어이 : Platform.runLater (새의 Runnable() { 공공 무효 실행() (문자열 str을위한 { :. SS) { lv.getItems() 추가 (STR) ; } } }); . 고맙습니다. –