2014-09-27 4 views
1

JList와 함께 사용할 문자열 배열을 만들려고합니다. Author 이름, Tittle 등이 포함 된 My Book 클래스의 개체 배열이 있습니다 ... 그러나 string.format을 사용하고 보낼 때 그것은 내 JList에 텍스트가 같은 system.out.format 사용할 때 정렬되지 않습니다.Java 문자열 형식

코드 :

final static String FORMAT = "|%1$-25s|%2$-25s|$%3$-10.2f|%4$-15s|%5$-13s|\n"; 

static String[] createStringList(Book[] dataBase) 
{ 
    String[] list = new String[dataBase.length]; 

    for (int i = 0; i < dataBase.length; i++) 
    { 
     list[i] = String.format(FORMAT, dataBase[i].getTittle(), dataBase[i].getAuthor(), 
             dataBase[i].getBookPrice(), dataBase[i].getNumberInStock(), 
             dataBase[i].getISBNNumber()); 
    } 
    return list; 
} 

static void printout(Book[] dataBase) 
{ 
    System.out.println("   Tittle" + "\t" + "     Author" + "\t" + "  Price" + "\t" + "Number In Stock" + "\t" + " ISBN Number"); 
    System.out.println("_____________________________________________________________________________________________"); 
    for (int i = 0; i < dataBase.length; i++) 
    { 
      System.out.format(FORMAT, dataBase[i].getTittle(), dataBase[i].getAuthor(), 
             dataBase[i].getBookPrice(), dataBase[i].getNumberInStock(), 
             dataBase[i].getISBNNumber()); 
    } 
} 

결과 스크린 샷 : enter image description here

당신이 볼 수 있듯이, 인쇄 방법이 잘 정렬하지만 난에 보내려고 할 때 내 JList의 그것이 내가 비록 망쳐 놨어요 동일한 코드를 사용합니다. 어떻게 정렬할까요? String format = "% 1 $ -25 | % 2 $ -25 | $ % 3 $ -10.2f | % 4 $ -15s | % 5 $ -13s | 값을 가지고 놀려고했습니다. 하지만 도움이되지 않습니다.

+1

각 열에 대해 별도의 JLists를 사용하고 Swing을 통해 선을 그리고 텍스트를 정렬하는 것이 더 좋습니다. 날 두려워하지 마라. 기본 List 패널을 만들고 오버로드 된 생성자를 통해 데이터가 채워진 배수를 만듭니다. – Petro

+0

나는 그것을 할 수 없다. 나중에 엔트리를 편집하는 방법을 추가 할 것이고 사용자는 JList에서 직접 편집 할 항목을 선택할 수 있기를 원한다. – user2457344

+0

우리는 항상 목록을 객체로 참조하고 객체를 통해 변경할 수 있습니다. – Petro

답변

0

JList에서 잘못 정렬 된 이유는 비례 글꼴을 사용하기 때문입니다. 모노 스페이스 (monospaced) 글꼴을 사용할 수는 있지만, 그렇게되면 추한 것입니다. JList의 열 (예 : 테이블 컨트롤)을 사용해야합니다.

+0

고정 폭 글꼴을 사용하면 멋지게 보이지 않지만 그래도 작업이 완료됩니다. – user2457344