1
DefaultListModel을 사용하여 데이터베이스에서 JList로로드 된 POJO를 출력하는 데 흥미로운 문제가 있습니다. 어떻게됩니까Java의 DefaultListModel이 addElement 메소드의 인수로 전달 된 String을 수정합니다.
private String formPersonDataStringRepresentation(PersonData personData) {
// ... checking the argument ...
// ... formatting ...
return String.format("%-17s%-17s", personData.getUsername(),
personData.getForename()
);
}
콘솔 대 때 인쇄 할 때 내 출력이 달라 보이는 것입니다 : PersonData 객체를 받아 문자열이 제시된 보이는 생성
// load POJO objects from the DB
PersonData[] allUsers = loadAllUserData();
DefaultListModel listModel = new DefaultListModel();
// fill in (with) the data
for (int i = 0; i < allUsers.length; i++) {
listModel.addElement(formPersonDataStringRepresentation(allUsers[i]));
}
JList list = new JList(listModel);
usersList = new JScrollPane(list);
방법 : 간단히,이 내 코드입니다 동일한 서식 ("% -17s % -17s")이 사용되지만 DefaultListModel의 인수로 사용됩니다.
더 나은 이해를 위해 콘솔 및 스윙 출력의 스크린 샷을 첨부하고 있습니다.
나에게도 똑같은 모양으로 보이지만, 콘솔은 모노 스페이스 글꼴이고 스윙의 기본 (Arial?)은 맞지 않다는 것을 알고 있습니까? –
JList의 글꼴을 명시 적으로 설정하여 정확합니다. list.setFont (새 글꼴 ("Monospaced", Font.PLAIN, 12)); 출력 방식이 변경되었습니다. 생성 된 공백을 검사해야합니다. – Pavol
우수 - 향후 Google 직원을위한 답변으로 재 게시했습니다. –