是否可以增加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);
}
}
答案 0 :(得分:4)
下面:
JPanel panel = new JPanel();
panel.add(cbox);
默认情况下,JPanel有一个FlowLayout作为布局管理器,而且这个不符合组件的首选大小。它只是使用最小可能的尺寸来适应组件。正如@ alex2410在评论中所说,您需要使用适当的Layout manager来管理组件大小和位置。
另请参阅此主题:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?
答案 1 :(得分:2)
看看这段代码。使用自定义ListCellRenderer
我设置了可见单元格的首选大小。
您可以使用以下代码类CustomComboBox
,只需更改getPreferredSize
的{{1}}的维度。
然后为您的JLabel
设置渲染器comboBox
comboBox.setRenderer(newCustomComboBox());
ListCellRenderer javadoc | JComboBox/ListCellRenderer tutorial