2017-12-03 23 views

답변

1

드롭 다운 화살표의 위치는 JComboBox와 연관된 ComboBoxUI에 의해 제어된다. 일반적으로이 동작을 변경하려면 ComboBoxUI의 자체 구현을 만들어야합니다. 다행히도, 귀하의 구체적인 필요에 따라 다른 방법이 있습니다. 기본 ComboBoxUI는 기본적으로 오른쪽에있는 화살표를 배치하도록 코딩되어 있지만에있는 화살표를 배치 할 구성 요소 방향으로 변경되는 경우 왼쪽에서 오른쪽에서 왼쪽으로 :

JComboBox<String> comboBox = new JComboBox<>(new String[]{"One", "Two", "Three"}); 
comboBox.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

enter image description here

로 전체 구성 요소의 방향에 영향을 주지만 콤보 상자 내의 목록 상자 항목의 방향에는 영향을주지 않습니다. 이를 조정하려면 구성 요소와 연결된 ListCellRenderer에서 applyComponentOrientation으로 전화하십시오. 커스텀 렌더러를 가지고 있다면, 그 객체에 대해서만 메소드를 호출 할 수 있습니다. 기본 렌더러, 그것은 조금 까다 롭습니다하지만 여전히 가능 : 콤보 상자가 편집 가능한 경우

ListCellRenderer<? super String> defaultRenderer = comboBox.getRenderer(); 
ListCellRenderer<String> modifiedRenderer = new ListCellRenderer<String>() { 
    @Override 
    public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, 
      boolean isSelected, boolean cellHasFocus) { 
     Component component = defaultRenderer.getListCellRendererComponent(
       list, value, index, isSelected, cellHasFocus); 
     component.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     return component; 
    } 
}; 
comboBox.setRenderer(modifiedRenderer); 

enter image description here

마지막으로, 당신은 가능성뿐만 아니라 에디터 컴퍼넌트에 applyComponentOrientation를 사용해야합니다.

+0

시간을내어 도와 주셔서 감사합니다.하지만 버튼 만 뒤집어 놓지 않고 왼쪽에 배치했기 때문에 combobox를 나쁜 모양으로 남겨 두었습니다. –

+0

@MichaelShenouda 그 경우에는 질문을 수정하고 무엇을 명확히 할 수 있습니까? 당신은 '뒤집힌'것을 의미합니다. 귀하의 질문은 현재 오른쪽 대신 팝업 메뉴 버튼을 배치하는 것에 대해서만 언급합니다. –

+0

나는 내 질문을 다시 새겼다. 나는 네가 지금 나를 이해할 것이라고 생각한다. –