如何翻转jcombobox?

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

我曾尝试:

setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 

但这里是结果:

回答:

下拉箭头的位置由与JComboBox相关的ComboBoxUI控制。一般来说,如果你想改变这种行为,你必须创建你自己的实现ComboBoxUI。幸运的是,为了您的特定需求,还有另一种方法。默认ComboBoxUI编码放置在默认情况下右侧的箭头,但它会放在箭头左边,如果组件的方向改变为从右到左:

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

comboBox.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

由于您可以看到,这会影响组件的整体方向,但它不会影响组合框内列表框项目的方向。要进行此调整,请在与组件关联的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);

最后,如果你的组合框可编辑,你可能需要向编辑器组件上使用applyComponentOrientation为好。

以上是 如何翻转jcombobox? 的全部内容, 来源链接: utcz.com/qa/259359.html

回到顶部