오늘 내 문제는 JFace TreeViewer
Composite
에서 간단한 경합과 관련됩니다. 최소 폭을 적용하기 위해 내 트리의 열에 ControlListener
을 첨부하려고합니다. 이렇게하려면 열이 크기가 조정될 때마다보고 있는데 새 너비가 너무 작 으면 최소값을 지정합니다.청취자가 스스로를 트리거하지 못하도록
이것은 GUI 문제이지만 실제로는 수정 리스너가있는 모든 Java 환경에서 발생할 수있는 문제입니다. 나는 아마도 당신 중에 자바 괴짜들이 재미 있을지도 모른다고 생각했습니다. 작동
public static void getSizeControlListener(final TreeColumn column, final int minSize) {
column.addControlListener(new ControlListener() {
@Override
public void controlMoved(ControlEvent e) {}
@Override
public void controlResized(ControlEvent e) {
if(column.getWidth()<minSize) {
column.setWidth(minSize);
}
}
});
하나의 해결책은 필요한 경우 중첩 된 호출은 즉시 종료를 참조 할 수 있다는 입구에 설정됩니다 플래그를 추가하는 것입니다. 그것은 효과가 있지만 더럽고 추악합니다.
public static void getSizeControlListener(final TreeColumn column, final int minSize) {
column.addControlListener(new ControlListener() {
private boolean isRunning;
@Override
public void controlMoved(ControlEvent e) {}
@Override
public void controlResized(ControlEvent e) {
if(isRunning)
return;
isRunning = true;
if(column.getWidth()<minSize) {
column.setWidth(minSize);
}
isRunning = false
}
});