我的程序中有一些JComboBox。我想以更宽的方式更改滚动条和箭头按钮的大小。我需要这个,因为我想在Windows平板电脑上使用该程序,而且它太小而无法使用手指。 有没有可能这样做?
JComboBox comboBox;
comboBox = new JComboBox(list_apple_device.toArray());
comboBox.setSelectedItem(null);
comboBox.setFont(schrift);
comboBox.setBounds(1568, 329, 306, 43);
comboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
textField.setText(""+e.getItem());
}
});
getContentPane().add(comboBox);
这是我的代码。
答案 0 :(得分:4)
您可以使用UIManger控制滚动条的宽度:
UIManager.put("ScrollBar.width", new Integer(50));
在创建组合框之前,您将执行该代码。
答案 1 :(得分:3)
它不是那么容易,但有一个解决方案,你必须继承jcombobox ......
您必须继承JComboBox
才能访问ComboBoxUI
。为此,您可以在对象实例化过程中设置自己的自定义ComboBoxUI
(我们会在所有构造函数中进行更改,请参阅init()
中的CustomComboBox
。
ComboBoxUI
需要ComboboxPopup
才能访问ComboboxPopup
。我们只使用自定义ComboboxPopup
替换默认ComboboxPopup
。您必须知道JScrollPane
负责创建下拉菜单,当您单击按钮时会弹出该菜单。
然后我们最终可以从Popup中调整JScrollBar
,我们抓住垂直public class CustomComboBox<T> extends JComboBox<T> {
public CustomComboBox() {
super();
init();
}
public CustomComboBox(ComboBoxModel<T> aModel) {
super(aModel);
init();
}
public CustomComboBox(T[] items) {
super(items);
init();
}
public CustomComboBox(Vector<T> items) {
super(items);
init();
}
public void init(){
CustomComboBoxUI ccbui = new CustomComboBoxUI();
setUI(ccbui);
}
}
并改变其外观(设置自定义宽度)。
ComboboxUI
这是允许您访问ComboboxPopup
的自定义public class CustomComboBoxUI extends BasicComboBoxUI{
protected ComboPopup createPopup() {
return new CustomComboBoxPopup( comboBox );
}
}
(非常简单):
ComboboxPopup
感谢自定义public class CustomComboBoxPopup extends BasicComboPopup{
public CustomComboBoxPopup(JComboBox combo) {
super(combo);
}
@Override
protected void configureScroller() {
super.configureScroller();
scroller.getVerticalScrollBar().setPreferredSize(new Dimension(40, 0));
}
}
只需要基本的构造函数覆盖,并且只更改了一个方法(将scrollpan的大小设置为40px):
String[] data = new String[]{"a","b","c","d","e","f","g","h","i"};
CustomComboBox<String> comboBox = new CustomComboBox(data);
comboBox.setPreferredSize(new Dimension(50,50)); //set the size you wish
设置组合框的大小,只需调整其大小
SELECT store_name, latitude FROM (`stores`)
WHERE (latitude BETWEEN '-1' AND '-12')
The Result:
"BELEM UMARIZAL" "-1.4454262"
"BELEM NAZARE DUQUE" "-1.454061"
"BELEM SUPERCENTER NAZARE" "-1.4595652"
"BELEM BATISTA CAMPOS" "-1.459802"
"ARACAJU" "-10.9336128"
"BELEM DOMINGOS MARREIROS" "-1.4443628"
"PALMAS " "-10.178152"
"SINOP" "-11.8573162"
"ARACAJU JARDINS" "-10.942702"
SELECT store_name, latitude FROM (`stores`)
WHERE store_name like '%RIO BRANCO%'
The Result:
"RIO BRANCO" "-9.9462713"
"RIO BRANCO AVIÁRIO" "-9.965754700000002"
另请参阅setting size of scroller和setting size of combobox以获取进一步的帮助......