Java 保留默认UI,同时更改某些方面
我目前有一个JComboBox,它总是设置在屏幕的底部,所以内容总是向上。鉴于我希望它上升,我想改变组合框上箭头的方向。我目前是这样做的:Java 保留默认UI,同时更改某些方面,java,swing,combobox,Java,Swing,Combobox,我目前有一个JComboBox,它总是设置在屏幕的底部,所以内容总是向上。鉴于我希望它上升,我想改变组合框上箭头的方向。我目前是这样做的: comboBox.setUI(new BasicComboBoxUI() { @Override protected JButton createArrowButton() { return new BasicArrowButton(BasicArrowButton.NORTH); } }); 但在执行此操作时,组合
comboBox.setUI(new BasicComboBoxUI()
{
@Override
protected JButton createArrowButton() {
return new BasicArrowButton(BasicArrowButton.NORTH);
}
});
但在执行此操作时,组合框会变成一种灰色版本。我如何使它成为默认的ComboBoxUI,但箭头朝上?如果您查看源代码,您将看到BasicComboxUI中该方法的默认实现是:
protected JButton createArrowButton() {
JButton button = new BasicArrowButton(BasicArrowButton.SOUTH,
UIManager.getColor("ComboBox.buttonBackground"),
UIManager.getColor("ComboBox.buttonShadow"),
UIManager.getColor("ComboBox.buttonDarkShadow"),
UIManager.getColor("ComboBox.buttonHighlight"));
button.setName("ComboBox.arrowButton");
return button;
}
当然,覆盖BasicComboxUI意味着您失去了LAF UI。例如,您可能会松开Windows和MAC自定义LAF。您确实需要覆盖所有要支持的LAF的UI。如果查看源代码,您将在BasicComboxUI中看到该方法的默认实现是:
protected JButton createArrowButton() {
JButton button = new BasicArrowButton(BasicArrowButton.SOUTH,
UIManager.getColor("ComboBox.buttonBackground"),
UIManager.getColor("ComboBox.buttonShadow"),
UIManager.getColor("ComboBox.buttonDarkShadow"),
UIManager.getColor("ComboBox.buttonHighlight"));
button.setName("ComboBox.arrowButton");
return button;
}
当然,覆盖BasicComboxUI意味着您失去了LAF UI。例如,您可能会松开Windows和MAC自定义LAF。您确实需要覆盖所有要支持的LAF的UI