2016-06-29 6 views
0

나는 국경없이 내용 만 보여주기 위해 이미 연구를 해왔다.JInternalFrame의 테두리를 제거 할 수 없습니다. Nimbus L & F

상단 제목 표시 줄 제거 : hiding title bar of JInternalFrame? -java

주변 경계를 제거 how to remove the borders in JInternalFrame?

모든 내가 Numbus UI 내 작업을 테스트 할 때까지, 나는 제목 표시 줄을 얻을 수있는, 원활하게 작동하지만를 주변 테두리가 붙어있다 :에 작동

enter image description here

예상 결과 (다른 L Fs를 &)가 있어야한다 :

enter image description here

내가 거기에 생각이 그것을 해결해야 할 몇 가지 UI 관련 설정 (UIDefaults, 또는 comp.putClientProperty())이다; 그러나 나는 그것이 무엇인지 알 수 없다.

+0

은 꾸며지지 않은 JDialog 또는 JWindow (아코디언/도킹에 사용됨)를 사용하기가 쉽지 않습니다. – mKorbel

+0

@mKorbel 가벼운 구성 요소를 사용하는 것이 더 편합니다. – Mordechai

+0

이렇게하면 부모 프레임 이동, 아이콘 화 등의 이벤트를 처리 할 필요가 없습니다. – Mordechai

답변

0

시행 착오를 통해 깨끗하지만 여전히 불완전한 해결책을 발견했습니다.

내가 할 일은 JInternalFrame의 UI를 다른 것으로 변경하는 것뿐입니다. 새 UI는 제목 표시 줄과 테두리를 제거 했으므로 실제 렌더링을 수행하지 않습니다.

이 솔루션은 불완전

, 코드에서 어디를 호출하지 마십시오 :

SwingUtilities.updateComponentTreeUI(); 

이 내부 프레임이 다시 기본 UI에 다시하게됩니다.


는 편집 : 마지막으로 위의 재설정 문제에 대한 해결책을 발견했다. Swing이 내 사용자 정의 UI가 아닌 다른 것을 설치하지 못하게하십시오. JInternalFrame의 서브 클래스를 사용

:

@Override 
public void updateUI() { 
     LookAndFeel laf = UIManager.getLookAndFeel(); 
     try { 
      UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel()); 
     } catch (UnsupportedLookAndFeelException e) { 
     } 

     super.updateUI(); 

     try { 
      UIManager.setLookAndFeel(laf); 
     } catch (UnsupportedLookAndFeelException e) { 
     } 
    } 

이 효과적으로 UI를 설정하는 변화를 무시하지만 나는 행복하지 않다. Look & Feel 전체를 재설정하고 불필요한 LaF 설정을 유발할 수있는 경쟁 조건을 유발할 수 있습니다.

저는 여전히이 구성 요소 만 금속으로 설정하는 해결책을 찾고 있습니다.