jcombobox 예제

이 코드는 이전 예제와 매우 유사하지만 몇 가지 설명을 보증합니다. 굵은 코드 줄은 사용자가 값을 입력할 수 있도록 편집을 명시적으로 켭니다. 기본적으로 콤보 상자를 편집할 수 없기 때문에 이 필요합니다. 이 특정 예제에서는 메뉴가 자주 사용하는 패턴에 대한 바로 가기만 하면 가능한 모든 날짜 서식 지정 패턴을 제공하지 않기 때문에 콤보 상자에서 편집할 수 있습니다. 이 콤보 상자에는 문자열 배열이 포함되어 있지만 대신 아이콘을 쉽게 사용할 수 있습니다. 콤보 상자에 다른 항목을 넣거나 콤보 상자의 항목 모양을 사용자 지정하려면 사용자 지정 렌더러를 작성해야 합니다. 편집 가능한 콤보 상자에는 사용자 지정 편집기도 필요합니다. 정보 및 예제는 사용자 지정 렌더러 제공을 참조하십시오. 경고: 중복 String 개체를 추가하면 포커스 및 키보드 탐색 문제가 발생할 수 있습니다.

해결 방법은 String 개체 대신 새 개체를 추가하고 toString() 메서드가 정의되어 있는지 확인하는 것입니다. 예: 이 예제의 전체 소스 코드는 CustomComboBoxDemo.java에 있습니다. 필요한 이미지 파일을 얻으려면 예제 인덱스를 참조하십시오. JComboBox는 낮은 수준의 이벤트 포커스, 키 및 마우스 이벤트에 대해 리스너를 등록하는 메서드를 상속하지만, 예를 들어 콤보 상자에서 낮은 수준의 이벤트를 수신하지 않는 것이 좋습니다. 그 이유는 다음과 같습니다: 콤보 박스는 두 개 이상의 다른 성분으로 구성된 복합 성분입니다. 콤보 상자 자체는 액션 이벤트와 같은 높은 수준의 이벤트를 발생시다. 하위 구성 요소는 마우스, 키 및 포커스 이벤트와 같은 하위 수준 이벤트를 발생시다. 낮은 수준의 이벤트와 이를 발생시키는 하위 구성 요소는 모양과 느낌에 따라 달라집니다. 모양 및 느낌 종속 코드를 작성하지 않으려면 콤보 상자와 같은 컴포넌트에 대한 상위 수준 이벤트만 수신해야 합니다. 상위 및 하위 수준 이벤트에 대한 토론을 포함하여 이벤트에 대한 자세한 내용은 이벤트 리스너작성을 참조하십시오. 예제의 다음 문은 ComboBoxRenderer(사용자 지정 클래스)의 인스턴스를 만들고 콤보 상자의 렌더러로 인스턴스를 설정합니다.

콤보 상자를 편집할 수 없는 경우 렌더러를 사용하여 현재 선택한 항목을 표시합니다. 반면 편집 가능한 콤보 상자는 편집기를 사용하여 선택한 항목을 표시합니다. 콤보 상자에 대한 렌더러는 ListCellRenderer 인터페이스를 구현해야 합니다. 콤보 상자의 편집기콤보박스편집기는 구현해야 합니다. 이 섹션에서는 편집할 수 없는 콤보 상자에 대한 사용자 지정 렌더러를 제공하는 방법을 보여 주어집니다. 팝업메뉴작성자에게 콤보박스의 팝업 부분이 취소되었음을 경고합니다. UI 부분에 대한 표시 크기를 계산하는 데 사용되는 프로토타입 표시 값을 설정합니다. 콤보 상자를 편집할 수 있는 경우 이 값은 addItem, insertItemAt 또는 데이터 생성자가 있는 콤보 상자에 추가되지 않았을 수 있습니다. 보호 된 속성변경Listener createAction속성체인지수신자(작업 a) .

작업 수신기로 전송되는 이벤트에 포함해야 하는 작업 명령을 설정합니다. UI 속성을 현재 모양과 느낌에서 값으로 재설정합니다. . . . 콤보 박스에는 화면 공간이 거의 필요하지 않으며 편집 가능한(텍스트 필드) 양식은 사용자가 표시된 값으로 사용자를 제한하지 않고 값을 빠르게 선택할 수 있도록 하는 데 유용합니다. 선택 항목 중 하나를 표시할 수 있는 다른 구성 요소는 라디오 단추 및 목록 그룹입니다. 라디오 단추 그룹은 일반적으로 사용자가 이해하기 가장 쉽지만 공간이 제한되거나 몇 가지 선택 항목 이상을 사용할 수 있는 경우 콤보 상자가 더 적합할 수 있습니다.

목록은 매우 매력적이지는 않지만 항목 수가 크거나 (예 : 20 개 이상) 여러 항목을 선택할 때 콤보 상자보다 더 적합합니다. . . 콤보 상자는 항목의 선택 상태가 변경될 때 발생하는 항목 이벤트도 생성합니다. 콤보 상자에서 한 번에 하나의 항목만 선택할 수 있으므로 사용자가 새 항목을 선택하면 이전에 선택한 항목이 선택되지 않습니다. 따라서 사용자가 메뉴에서 다른 항목을 선택할 때마다 두 개의 항목 이벤트가 발생합니다.

Dark Bugsyjcombobox 예제