• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何翻转jcombobox?

java 来源:Michael Shenouda 3次浏览

如何翻转jComboBox以便弹出菜单按钮位于左侧而不是右侧?如何翻转jcombobox?

我曾尝试:

setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

但这里是结果:

enter image description here

===========解决方案如下:

下拉箭头的位置由与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)