2009-08-05 2 views
1

JTabbedPane 개체에 setSelectedComponent 또는 setSelectedIndex을 사용하면 패널이 항상 내 UI에 표시됩니다. 그러나 때로는 패널과 연결된 탭이 숨겨진 상태로 유지됩니다. 즉, 탭은 탭 분할 창의 보이는 부분으로 스크롤하지 않습니다.JTabbedPane에서 탭을 앞쪽으로 가져 오기

어떻게 해결할 수 있습니까? 나는 치즈 한개의 선택 인덱스를 시도하고, 원하는 인덱스뿐만 아니라 몇 가지 다른 더 우아한 것들을 선택했지만, arrrrgh !!

가능한 경우 도와주세요.

감사합니다, 토드

답변

2

나는 전화가 동부 서머 타임에 수행되지 않습니다 생각합니다. 그것으로 마무리하십시오 SwingUtilities.invokeLater

+0

이는 일 - 감사합니다! – Todd

+0

BTW, ListCellRenderer 내에있는 유사한 코드를 래핑 할 필요가 있습니까? 아니면 목록이 어디에 있을지에 대해 너무 모호한 질문입니까? – Todd

+0

UI (짝수 모델)와 관련이있는 코드는 EDT에서 실행해야합니다. SwingUtilities.isEventDispatchThread()를 사용하여 현재 작업 중인지 확인할 수 있습니다. –

1

스윙 구성 요소 또는 모델을 변경하여 EDT에서 호출해야하지만 백그라운드 스레드에서 호출 할 수있는 방법이있는 경우 여기에 사용할 수있는 패턴이 있습니다. 이것은 EDT에 FUNC 항상 실행을 보장 :

void func(final Type1 arg1, final Type2 arg2) { 

    if (!SwingUtilities.isEventDispatchThread()) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       func(arg1, arg2); 
      } 
     }); 
     return; 
    } 
    // method code goes here 
} 
+0

데본, 패턴을 가져 주셔서 감사합니다. – Todd