繁体   English   中英

如何设置JComboBox项的边框

[英]How to set Border of JComboBox items

我想在我的应用程序中创建一个默认的JComboBox。 但是我在JComboBox项目的设置边框中遇到了一个小问题。

这里是JComboBox

package test.combobox;

import java.awt.Color;
import java.awt.Font;
import javax.swing.JComboBox;

public class MyComboBox extends JComboBox<Object> {
    public MyComboBox() {
        super();

        setBackground(new Color(0xFFFFFF));
        setFont(new Font("Tahoma", 0, 14));
    }
}

我需要设置JComboxBox的项边框:

Border itemBorder = BorderFactory.createCompoundBorder(
        new LineBorder(new Color(0xCCCCCC), 1, true), 
        BorderFactory.createEmptyBorder(0, 7, 0, 7));

测试ComboBox。

package test.combobox;

import java.awt.Dimension;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.UIManager;
import net.sf.jasperreports.engine.JRException;

public class TestComboBox {
    public static void main(String[] args) throws JRException {

        UIManager.getCrossPlatformLookAndFeelClassName(); 

        JFrame frame = new JFrame("MyComboBox");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(300, 70));

        MyComboBox cb = new MyComboBox();
        cb.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cb.setPreferredSize(new Dimension(300, 30));

        frame.getContentPane().add(cb);
        frame.pack();
        frame.setVisible(true);
    }
}

JComboBox中的项目通过ListCellRenderer接口呈现。

请查看如何使用组合框提供自定义渲染器的示例

这是一个重要的概念,因为JTableJTreeJList也使用这个概念......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM