2012-06-11 2 views
0

포함 된 프레임에서 JComboBox를 사용할 때 이상한 포커스 문제가 있습니다. SWT_AWT.new_Frame : 창이 움직일 때 JComboBox가 포커스를 잃지 않음

제가

shell = new Shell(display.getActiveShell(), SWT.SHELL_TRIM | SWT.APPLICATION_MODAL); 

난이 인 RootPanel로 (2 개 요소)하는 JComboBox 추가

Composite contentComposite = new Composite(parent, SWT.EMBEDDED); 
    contentComposite.setLayout(new FillLayout()); 

    frame = SWT_AWT.new_Frame(contentComposite); 
    rootPanel = new Panel(); 
    rootPanel.setLayout(new BorderLayout()); 
    frame.add(rootPanel); 

같은 임베디드 프레임을 생성하기 위해 사용하는 쉘 같은 새로운 쉘을 만들었다. 드롭 다운 메뉴를 여는 ComboBox를 선택하면 콤보 상자에서 포커스를 잃지 않고 셸 창을 끌어다 놓을 수 있습니다.

드롭 다운 메뉴는 쉘 윈도우가 다른 화면 영역으로 이동할 때도 화면의 동일한 위치에 있습니다. 드롭 다운 메뉴는 콤보 상자 아래에 더 이상 표시되지 않습니다.

일부 구성 요소에 포커스 수신기를 추가하려고했지만 포커스가 콤보 상자에서 손실되지 않고 셸에서 얻지 못했습니다.

그래서 쉘을 이동하거나 포커스를 얻으면 콤보 상자의 팝업을 숨길 수 있습니다.

+2

'SWT_AWT.new_Frame' SWT와 AWT의 혼합? 'JComboBox' 이제는 SWT/AWT/Swing입니까?!? SWT에는 Swing 콤보 상자와 동등한 것이 없습니까? 재앙으로 3 종 모두가 끝난다는 사실이 놀랍지는 않습니다. –

+0

그 도전입니다. 다른 모든 것은 덜 재미 있습니다. 하지만 당신 말이 맞아요, 전 2 UI 기능을 먼저 사용하려고 할 수 있습니다. –

+1

* "그게 도전이야"* 도전? 나는이 혼합의 세부 사항을 이해하지 못한다고 생각합니다. 예 : Java 1.7에서는 오라클이 Swing & AWT **를 안정적으로 혼합 할 수있는 기능을 지원했습니다. ** * "AWT는 ComboBox가 없습니다."* AWT에서는 [http] http (http : : //docs.oracle.com/javase/7/docs/api/java/awt/Choice.html) 구성 요소. –

답변

1

그의 코멘트에 설명 된 Andrew Thompson 이후, 3 개의 다른 UI 라이브러리가 최선의 선택이 아니므로 AWT Choice 클래스를 사용해보기 시작했습니다.

셸 창이 선택되면이 클래스가 포커스를 잃고 있습니다.

그래서 스윙은 임베디드 AWT 객체에서 그렇게 쉽게 사용할 수 없지만 아직 보지 못한 이유가 있습니다.

+0

자세한 내용은 [무겁고 가벼운 구성 요소 혼합] (http://java.sun.com/products/jfc/tsc/articles/mixing/)을 참조하십시오. –

관련 문제