2011-12-02 2 views
2

응용 프로그램에 대한 몇 가지 UI 지속성 방법을 쓰고 있습니다. 테이블 모델에서 고정 된 N 열 집합을 사용하여 JXTable로 확장하려고합니다.JXTable : 열 모델에서 상태를 쿼리하는 방법?

JXTable의 #k 열에 대해 다음 정보를 가져오고 설정할 수 있습니다. 여기서 k는 테이블 모델 순서의 열 번호입니까? 소리가 나는 것처럼 쉽지는 않지만 적어도 까다로운 정보가 빠져 있습니다.

  • 열 너비
  • 열 가시성
  • 열 순서

TableColumnModelExt.getColumns()이 미친 메모를 포함

  • 나는 문제 분석에 봉착한다 :

    java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)

    을 포함 된 TableColumns의 List를 리턴합니다. includeHidden이 true인지 false인지에 따라 보이지 않는 열을 포함하거나 제외합니다. false의 경우, List에 대한 Iterator는 getColumns()에 의해 반환되는 Enumeration과 같습니다.

    참고 : 목록에있는 열의 순서는 보이지 않는 열이 포함되어 있는지 여부에 달려 있습니다. 전자의 경우에는 표시 순서가 삽입 순서이고 표시 할 열의 현재 순서입니다.

    또한, 나는 JTable.convertColumnIndexToView()을 사용하는 방법을 알고 있지만 숨겨진 열 -1을 반환하고, 다시 볼 사항이있는 경우 숨겨진 열이 갈 것이라고 주문하는에 대한 정보를 남기지 않습니다. JXTable은 열 정보를 복원 할 수 있기 때문에이 정보를 알고 있으며 열이 숨겨지기 전의 위치에 놓습니다.

  • +0

    왜 그것이 미쳤다고 생각합니까? 조심스럽게 : 나는 의사와 JXTable에 관한 거의 모든 것을 작성했다 :-) – kleopatra

    +0

    OK, 좋은 지적. JXTable은 JTable과 다른 용어를 사용합니다. JTable은 "삽입 순서"와 "보이는 열의 현재 순서"를 사용하지만 JTable은 "보기"와 "모델"의 색인을 사용합니다. JTable.convertColumnIndexToView로 표현 된 이러한 개념에 JXTable의 문서가 대응하고있는 경우, 「가시 순서」= 「가시 순서의 현재의 순서」및 「모델의 순서」= 「순서 붙일 수있다」인 경우, 매우 도움이됩니다. –

    +1

    객관적인 포인트를 참조하십시오. 그러나 삽입 순서가 모델 순서와 다를 수 있습니다. 처음에는 열이 모델 순서로 삽입되지 않았습니다 .--) 숨겨진 열을 지원하면 JXTable에서 "차원"을 추가하여 숨겨진 열을 다시 표시 할 수 있습니다 눈에 보이는 기둥을 움직일 때까지 감추어 진 순간에 뷰 위치에 가장 가깝게 움직여야합니다. 따라서 세 번째 좌표계가 있습니다 : 현재보기 (현재 표시), 잠재보기 (모든 숨김 표시) 및 모델입니다. 그 사실을 더 잘 공식화하기위한 기부는 행복하게 받아 들여집니다 :-) – kleopatra

    답변

    3

    정확하게 이해하면 숨겨진 열이 다시 볼 수있게했을 때보기 열 색인 뒤에 있습니다. 그것은 직접 지원되지 않습니다.

    저장/복원 목적으로 AppFramework에서 수행하는 방법에 대한 아이디어를 줄 수있는 class XProperties (공식적으로 지원되지 않지만 원활하게 작동하지 않음)이 있습니다.

    편집, modelIndex하여 TableColumn의를 얻을 모든 열, 루프를 얻고 modelIndex를 비교합니다. 의사 메소드의 일부 의사 코드 getColumnFor (modelIndex) :

    List allColumns = table.getColumns(true); 
    forEach { 
        if (column.getModelIndex() == modelIndex) { 
         return column; 
        } 
    return null; 
    
    +0

    흠. 글쎄, 좋아, JXTable에서 TableColumn을 가져 오는 가장 쉬운 방법은 무엇입니까? –

    +0

    아하, 알았어, 고마워! idk 왜 내가 생각하지 않았다. –

    1

    는이 프로젝트가 죽은 AFAIK 지금이지만, 내가 처음부터이 기능을 구현하는 것보다 더 나은 출발점이라고 생각

    Swing Application Framework (JSR-296)을 사용하는 것이 좋습니다.

    : (. 그것은 오픈 소스)

    당신이 (내가보기 엔 추천) 넷빈즈 플랫폼의 상단에서 응용 프로그램을 작성하는 경우, 다음이 두 프레임 워크를 사용하는 방법에 내 블로그를 보라 http://puces-blog.blogspot.com/2009/04/netbeans-platform-meets-swing.html

    참고 : 또한 이것에 대해 많이 모르는 Better Swing Application Framework

    The Better Swing Application Framework is a fork of the original Swing Application Framework (appframework) reference implementation of JSR 296. Since August 2009, the original Swing Application Framework project has been on hold, and therefore this fork was created to carry on the work until the original project resumes. 
    

    있다, 그러나 그것은 심지어 더 좋은 출발점이 될 수 있습니다.

    +0

    고마워요,하지만 제 질문은 정말로 끈기에 관한 것이 아닙니다. 나는 이미 나를 위해 작동하는 프레임 워크를 가지고있다. 제 질문은 GUI 구성 요소에 대한 정보를 얻거나 설정하는 것입니다. –

    관련 문제