0

JComboBox在我的应用程序中使用,我想增加填充。我的组合框中的所有初始内容都与左边框非常接近,所以我想填充它,使它看起来有点清晰。

这是我在我的应用程序中使用的一些示例代码:

jPanelPatientInfo.add(jComboBoxNation, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,   
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 10, 0, 0), 0, 0));
4

3 回答 3

2

我假设您想增加(列表部分)内部的填充。JComboBox问问题时需要更具体。

这是填充 a 内部的一种方法JComboBox

import java.awt.Component;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

public class BorderListCellRenderer implements ListCellRenderer {

    private Border insetBorder;

    private DefaultListCellRenderer defaultRenderer;

    public BorderListCellRenderer(int rightMargin) {
        this.insetBorder = new EmptyBorder(0, 2, 0, rightMargin);
        this.defaultRenderer = new DefaultListCellRenderer();
    }

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        JLabel renderer = (JLabel) defaultRenderer
                .getListCellRendererComponent(list, value, index, isSelected,
                        cellHasFocus);
        renderer.setBorder(insetBorder);
        return renderer;
    }

}

然后,您可以像这样使用该类。

JComboBox comboBox = new JComboBox(elements);
comboBox.setRenderer(new BorderListCellRenderer(20));
于 2013-06-03T15:37:57.133 回答
1

在面板上为组件提供更多空间的最简单方法是向面板添加边框。看起来您正在使用 GridBagLayout 所以代码将类似于:

JPanel panel = new JPanel( new GridBagLayout() );
panel.addBorder( new EmptyBorder(10, 10, 10, 10) );
panel.add(component1, constraints);

现在,如果您在不同的行上添加组件,它们都将缩进 10 像素。

于 2013-06-03T14:56:46.857 回答
0

尝试调用setPrototypeDisplayValue组合框。这将根据使用的文本量设置宽度。如链接文档中所述,如果不存在,则它会根据每个元素的大小使用首选宽度。

于 2013-06-03T14:28:09.670 回答