2013-02-20 1 views
1

println을 사용하여 멋지게 형식화 된 2 차원 배열을 인쇄하는 Java 프로그램이 있습니다. eclipse에서이 배열은 물론 콘솔에 출력됩니다. 그러나, 나는 동일한 프로젝트에서 별도의 SWT 프로그램을 만들었고이 배열을 Eclipse 위젯 대신 텍스트 위젯에 인쇄하려고합니다. 어떻게해야합니까?Java 편집 프로그램이 콘솔 대신 SWT 텍스트 위젯에 직접 인쇄합니다.

public static void main(String[] args) throws IOException { 
    try { 
     ReadFile file = new ReadFile(path); 
     String[][] pf = file.aryData(); 
     int tmp = 1; 
     int yn=1; 
     while(yn==1){ 
     Scanner in = new Scanner(System.in); 
     System.out.print("To View-0 , Add-1 "); 
     yn = in.nextInt(); 
     PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(path, true))); 
     out.println(""); 
     if (yn == 1) { 
      String[][] newpf = new String[pf.length + 1][c]; 
      String newData1; 
      System.arraycopy(pf, 0, newpf, 0, pf.length); 
      for (int i = 0; i < c; i++) { 
       System.out.print("Insert " + pf[0][i]+":  "); 
       if (i==0){ 
        in.nextLine(); 
        newData1 = in.nextLine(); 
        out.print(newData1); 
       } 
       else { 
        newData1 = in.nextLine(); 
        out.print(", "+newData1); 
       } 
       newpf[pf.length][i] = newData1; 
      } 
      System.out.print(""); 
      pf=newpf; 
      out.close(); 
      } 
     } 
     for (int i = 0; i < pf.length; i++) { 

      for (int k = 0; k < c; k++) { 
       int tmp2 = pf[i][k].length(); 
       if (tmp2 > tmp) { 
        tmp = tmp2 + 5; 
       } 
      } 
     } 
     for (int i = 0; i < pf.length; i++) { 
      for (int j = 0; j < c; j++) { 
       String fmStr = "%-" + tmp + "s"; 
       System.out.printf(fmStr, pf[i][j]); 
      } 
      System.out.println(""); 
     } 
    } 
    } 

답변

1

콘솔에 인쇄하는 경우 System.out을 직접 사용합니까? OutputStream에 출력하는 다른 PrintStream를 사용하려면, System.out를 PrintStream로서 파라미터 화 할 필요가 있습니다.

[편집 코드의 업로드 후]

내가 당신이 원하는 것을 얻을 경우, 당신은 라인 교체해야 할 것 "System.out.printf (fmStr, PF를 [I] [J]);" 문자열을 저장하거나 형식화 된 출력을 다른 스트림에 쓰고 다른 프로그램으로 리디렉션 할 수 있습니다. 당신은 SWT 프로그램에서 그것을 사용하기 위해 Main으로부터 치료를 외부화하고 싶을지도 모릅니다.

+0

게시 한 코드를 참조하십시오. – nbhgt

+0

내가 원하는 것을 얻으면 "System.out.printf (fmStr, pf [i] [j]);"줄을 바꿔야합니다. " 문자열을 저장하거나 형식화 된 출력을 다른 스트림에 쓰고 다른 프로그램으로 리디렉션 할 수 있습니다. SWT 프로그램에서 치료를 사용하기 위해 치료실을 외부에서 외부화하고 싶을 수도 있습니다. – benzonico

+1

나는 이것에 동의한다. 'OutputStream' (또는'PrintWriter')을 매개 변수로 취하는 메소드에 배열 인쇄 코드를 추출 할 수 있습니다. 이 방법으로, 당신은'StringOutputStream'을 콘솔로 출력 할 수 있습니다. – Mithfindel

관련 문제