在Swing中设置JComboBox的文本大小

时间:2013-09-09 17:47:54

标签: java swing fonts jcombobox font-size

我在java中创建了一个组合框(使用Netbeans)。我想设置列表中每个项目的文本大小,但不知道如何操作。 (最好我想使用默认的字体样式)。 任何人都知道如何做到这一点?

代码段:

private javax.swing.JComboBox ComboBox_agent = new javax.swing.JComboBox();
ComboBox_agent.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TCP", "UDP", "Sink", "NULL" }));

2 个答案:

答案 0 :(得分:4)

使用具有适当字体大小的列表单元格渲染组件。此示例使用20个像素。

import java.awt.*;
import javax.swing.*;

class ShowFonts {

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                GraphicsEnvironment ge = GraphicsEnvironment.
                    getLocalGraphicsEnvironment();
                String[] fonts = ge.getAvailableFontFamilyNames();
                JComboBox fontChooser = new JComboBox(fonts);
                fontChooser.setRenderer(new FontCellRenderer());
                JOptionPane.showMessageDialog(null, fontChooser);
            }
        });
    }
}

class FontCellRenderer extends DefaultListCellRenderer {

    public Component getListCellRendererComponent(
        JList list,
        Object value,
        int index,
        boolean isSelected,
        boolean cellHasFocus) {
        JLabel label = (JLabel)super.getListCellRendererComponent(
            list,value,index,isSelected,cellHasFocus);
        Font font = new Font((String)value, Font.PLAIN, 20);
        label.setFont(font);
        return label;
    }
}

答案 1 :(得分:0)

如果您在Netbeans GUI编辑器中创建JComboBox,则会有一个“字体”字段,允许您更改大小。