2014-11-07 3 views
0

UI 리소스를 가져 오는 방법을 API에서 찾기가 매우 어려웠습니다. 나는 UI 자원 이름이 아닌 실제 자원을 가져올 수 :디자이너에서 UI 리소스 가져 오기

fetchResourceFile().getUIResourceNames() 

내가, 내가 디자이너의 작은 구성 요소를 설계했다입니다 달성하기 위해 노력하고, 나는이 표시되기 전에 폼에 추가하고 싶습니다.

코드에 UI 구성 요소를 가져올 수 있습니까?

답변

1

간단한 getter를 사용하여 얻을 수있는 대부분의 리소스. getImage()

UI 요소는 UIBuilder 클래스에 바인딩되어 있기 때문에 더 복잡합니다. 우리의 목표는 GUI 빌더의 기능을 원하지 않는 개발자를 위해 바이너리 크기를 매우 작게 유지하고 Resources 클래스에서 UIBuilder 클래스로 종속성을 생성하고 싶지 않았기 때문입니다.

은 그래서 당신은 역에있는 API를 사용할 필요가 디자이너에서 UI 구성 요소를로드 :

UIBuilder uib = new UIBuilder(); 
Container cnt = uib.createContainer(resource, name); 

공지 사항을 FormDialog 이후 Container의 서브 클래스는 적절한 그들에게 자연적으로 내리 뜬 당신이 할 수 있음.

또한 내가 디자이너에서 사용자 정의 컨테이너를 사용하는 경우

+0

은 현재 대신 복사됩니다 ... 당신이 UIBuilderStatemachine 클래스의 서브 클래스가 있다면 그래서 당신은 새로운 UIBuilder 인스턴스를 생성 할 필요가 없습니다 것을 알 수 참조되고있다. 사용자 정의 컨테이너의 모든 변경 사항이 해당 구성 요소의 모든 인스턴스에 적용된 경우 좋을 것입니다. 그렇지 않으면 잠재적으로 오류가 발생하기 쉽고 모든 위치에서 구성 요소를 업데이트하는 것을 잊기 쉽기 때문에 디자이너가 자동으로 사용자를 찾을 수있는 방법이 없습니다. 정의 된 컨테이너가 사용됩니다. 현재 내가 찾은 유일한 해결 방법은 디자이너에서가 아니라 코드에 이러한 사용자 정의 컨테이너를 추가하는 것입니다. – ruruskyi

+0

항상 새로운 인스턴스가됩니다. 리소스 파일에는 인스턴스가 아닌 바이트 데이터 만 포함되므로 새 인스턴스를 디자인 할 수 있습니다. 인스턴스가 포함 된 경우 아이콘 등이 모두 비트 맵으로 확장되므로 시간이 없어 메모리가 부족합니다. GUI 빌더의 기본 설계는 양식의 인스턴스를 버리고 재 작성하여 RAM을 절약하는 것입니다. –

+0

런타임에서 새 인스턴스를 만드는 것이 절대적으로 의미가 있습니다. 그러나 내 질문은 UI 빌더에만 관련되었다. 디자이너 모드에서 사용자 정의 컨테이너의 인스턴스를 의미했습니다. IMHO, '포함'과 같이 작동해야합니다. 예를 들어, 버튼 막대가 두 가지 다른 형태로 사용되었다고 가정 해보십시오. 간단하게하기 위해이 포함 된 막대는 양식 작성기에서 편집 할 수 없지만 자체 빌더에서만 편집 할 수 있습니다. 그런 다음 새로운 변경 사항이 버튼 막대에 적용되면 양식에 제대로 배치됩니다. 인스턴스화는 그대로 유지됩니다. – ruruskyi

관련 문제