java更改JCombobox的高度
有可能增加JComboBox
的高度吗?(不参考弹出菜单)
我试过:
comboBox.setPreferredSize(new Dimension(200, 100));
及
Component[] comp = comboBox.getComponents();
for (int i = 0; i < comp.length; i++) {
if (comp[i] instanceof JButton) {
JButton btn = (JButton) comp[i];
btn.setPreferredSize(new Dimension(200, 100));
}
}
但运气不好。 然后我试图解决布局管理器的问题:
JPanel panel = new JPanel(new GridBagLayout());
panel.setPreferredSize(new Dimension(100, 100));
GridBagConstraints c = new GridBagConstraints();
c.weighty = 1;
c.fill = GridBagConstraints.VERTICAL;
panel.add(cbox, c);
但这似乎不会改变JComboBox
按钮的大小
public class ComboBoxFontChange extends JFrame {
public ComboBoxFontChange() {
// CREATE BOX
JComboBox<String> cbox = new JComboBox<String>();
cbox.setFont(cbox.getFont().deriveFont(30.0f));
// TRY CHANGE SIZE: DOSE NOT WORK..
cbox.setPreferredSize(new Dimension(200, 100));
cbox.setSize(new Dimension(200, 100));
cbox.setMinimumSize(new Dimension(200, 100));
// TRY CHANGE SIZE ON BUTTON INSTEAD: DOSE NOT WORK..
Component[] comp = cbox.getComponents();
for (int i = 0; i < comp.length; i++) {
if (comp[i] instanceof JButton) {
JButton btn = (JButton) comp[i];
btn.setPreferredSize(new Dimension(200, 100));
btn.setSize(new Dimension(200, 100));
btn.setMinimumSize(new Dimension(200, 100));
}
}
cbox.addItem("Quarter");
cbox.addItem("Nickel");
cbox.addItem("Penny");
JPanel panel = new JPanel();
panel.add(cbox);
getContentPane().add(panel);
}
public static void main(String[] args) {
ComboBoxFontChange frame = new ComboBoxFontChange();
frame.setSize(300, 150);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
# 1 楼答案
看看这个代码。我使用自定义^{} 设置可见单元格的首选大小
您可以使用以下代码类
CustomComboBox
,只需更改JLabel
的getPreferredSize
的维度然后为
comboBox
设置渲染器comboBox.setRenderer(newCustomComboBox());
ListCellRenderer javadoc| JComboBox/ListCellRenderer tutorial
# 2 楼答案
这里:
默认情况下JPanel有一个FlowLayout作为布局管理器,这个不支持组件首选的大小。它只适合使用最小尺寸的组件。正如@alex2410在他的评论中所说,您需要使用适当的Layout manager来管理组件的大小和位置
还可以看看这个主题:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?