고정 열과 나머지 하나를 혼합하여 성운 NatTable을 만드는 방법과 고정 폭 열의 사용자 크기를 결정할 수있는 중요한 결정적 위치는 무엇입니까?고정 너비 열의 NatTable 혼합 및 크기 조정 가능한 남은 채우기 공간에
카메라 예 :
+---------------------------------------+----------+-------+
| ...fills available vert space... | 120px | 100px |
사용자가 칼럼 (1)과 (2) 사이의 경계를 누름으로써 제 3 컬럼의 사이즈를 변경
+-----------------------------------------+-------+-------+
| ...fills available vert space... | 100px | 100px |
사용자는 좌측 열 사이의 경계 0 및 1을 눌러 중간 열의 크기를 조절 왼쪽 :
+------------------------------------+----------+----------+
| ...fills available vert space... | 120px | 120px |
나는이 코드와 매우 근접해있다 :
IRowDataProvider<String> bodyDataProvider = ...;
DataLayer bodyDataLayer = new DataLayer(bodyDataProvider);
SelectionLayer selectionLayer = new SelectionLayer(bodyDataLayer, false);
ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);
bodyDataLayer.setColumnPercentageSizing(0, true);
bodyDataLayer.setColumnPositionResizable(0, true);
bodyDataLayer.setColumnWidthByPosition(1, 100);
bodyDataLayer.setColumnPositionResizable(1, true);
bodyDataLayer.setColumnWidthByPosition(2, 100);
bodyDataLayer.setColumnPositionResizable(2, true);
시각적으로 무엇을 의도했는지, 컨테이너 (쉘)에서 의도 한대로 반응합니다. 고정 된 열은 100px로 유지되고 첫 번째 열만 크기가 조정됩니다. 지금까지는 좋았어. 그러나 문제가 있습니다. 열간 크기 조정에 나쁜 점이 있습니다. 나는 이상하게 반응한다. 열 0과 열 1 사이의 크기 조정 핸들러 (머리글 테두리)는 아무 작업도 수행하지 않고 크기 조정 만 표시되지만 크기 조정은 실행되지 않습니다. 열 1과 열 2 사이의 크기 조정 핸들러는 반응하지만 열 1 만 효과적으로 크기를 조정할 수 있으며 열 2는 사용자가 수행하는 모든 크기를 유지합니다.
나쁜 행동의 예 : 열 2 (세 번째 열)의 크기를 조정하여 크기를 크게하려면; 열 1과 2 사이의 경계선을 잡고 왼쪽으로 왼쪽으로 테두리 1을 왼쪽으로 효과적으로 밀어 열 2를 더 크게 만들려고합니다. 그러나 컬럼 1이 축소되는 동안 컬럼 2는 동일하게 유지됩니다!
UPDATE
내 질문에 원하는 동작을 구현하는 방법이다. 무엇을 어디서 설정하거나 다시 구현해야합니까? SizeConfig
을 맞춤 설정 하시겠습니까? 방법은 유망한 것으로 들린다 : calculatePercentages()
과 calculateAvailableSpace()
. 누가 언제 전화를합니까? 열 크기 조정 이벤트를 잡는 방법? 청취자를 어딘가에 설정해야합니까? NatTable에서 사용자 정의 된 SizeConfig
을 사용하려면 어떻게해야합니까? 올바른 방향으로 가고 있습니까?
언급 한 (측면) 문제에 대한 버그 보고서를 만들었습니다 : https://bugs.eclipse.org/bugs/show_bug.cgi?id=516625. 내가 왜 NatTable이 기본 설정으로 이상하게 동작하는지, 왜 바닐라 ColumnResizeCommandHandler를 사용하여 내 예제의 첫 번째 열이 실제로 unresizable인지 알아 냈습니다. – Espinosa