2017-12-03 6 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

として、これはコンポーネント全体の方向に影響しますが、コンボボックス内のリストボックスアイテムの向きには影響しません。この調整を行うには、コンポーネントに関連付けられたListCellRendererapplyComponentOrientationに電話してください。カスタムレンダラーをお持ちの場合は、そのオブジェクトのメソッドを呼び出すことができます。デフォルトのレンダリングで、それは少しトリッキーが、まだ可能です:あなたのコンボボックスが編集可能な場合

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

コンボボックスを残して左に置いておいてください。コンボボックスを悪い外観に残してください –

+0

@MichaelShenoudaその場合は、質問を編集して何を明確にすることができれば助けになりますあなたは '反転した'ことを意味します。あなたの質問は現在、右ではなく左にポップアップメニューボタンを配置することだけが言及されています。 –

+0

私は私の質問を再編集しました、あなたは今私を理解するつもりだと思います。 –

関連する問題