如何更改JComboBox的字体

时间:2019-07-11 11:45:22

标签: java swing jcombobox

我想更改我的JComboBox的字体大小。 但是,只有未选中的项目会发生变化,例如

https://imgur.com/a/WnnyPA6

所以我希望所选项目也加粗。

我像这样做了一个自定义组合框类:

public class CustomComboBox extends JLabel implements ListCellRenderer {
    public Component getListCellRendererComponent(
            JList list, 
            Object value, 
            int index, 
            boolean isSelected, 
            boolean cellHasFocus) {

        JLabel label = new JLabel(){
            public Dimension getPreferredSize(){
                return new Dimension(200, 80);
            }       
        };
        label.setText(String.valueOf(value));
        label.setFont(new Font("Serif", Font.BOLD, 30));

        return label;
    }
}

2 个答案:

答案 0 :(得分:1)

您可以简单地为组合框设置字体。像这样:

import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.plaf.basic.BasicComboBoxRenderer;

/**
 * <code>ComboTest</code>.
 */
public class ComboTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new ComboTest()::startUp);
    }

    private void startUp() {
        JComboBox<String> combo = new JComboBox<>(new String[] {"A", "B", "C"});
        combo.setFont(new Font("Serif", Font.BOLD, 30));
        combo.setRenderer(new ComboRenderer());
        JFrame frm = new JFrame("Combo test");
        frm.add(combo);
        frm.pack();
        frm.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frm.setLocationRelativeTo(null);
        frm.setVisible(true);
    }

    private static class ComboRenderer extends BasicComboBoxRenderer {

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 80);
        }
    }
}

如果我的建议对您的情况没有帮助,请创建一个小的可运行示例,以便我们也可以启动和调试它。

答案 1 :(得分:1)

您可以使用以下方法为组合框设置字体 combo.setFont(new FontUIResource(“ Roboto”,Font.PLAIN,12);