如何向JCombobox添加填充

时间:2012-03-23 11:35:35

标签: java swing padding jcombobox jtextfield

想象一下Panel,其垂直顺序为JComboboxJTextfield

Textfield显示其内容,左边有一个小填充,Combobox没有。

有人知道如何将此填充添加到JCombobx吗?

我尝试过设置渲染器,但javadoc说:

  

设置绘制列表项和所选项的渲染器   从列表中   JComboBox字段。如果JComboBox不是,则使用渲染器   编辑。如果它是可编辑的,则编辑器用于渲染和编辑   所选项目。

祝你好运 马可

4 个答案:

答案 0 :(得分:0)

猜测一下,setPrototypeDisplayValue可能会对您有所帮助,但实际上我们需要一个问题的截图以及您需要更改的内容。

答案 1 :(得分:0)

您可以使用JTextField#setMargin来消除边距。不完全是你要求的,但是,嘿,你的组件将是一致的。

另一种解决方案是使用FlowLayout,使用setHGap手动设置容器边框与组件之间的距离,并仍使用JTextField#setMargin方法确保复选框和文本字段已对齐

答案 2 :(得分:0)

如果我理解你的话,这取决于你正在使用的LayoutManager。 在此示例中:http://pastebin.com/PFr1jafP您将看不到您提到的任何填充。

尝试提供您尝试实现的目标的小代码示例/屏幕截​​图,以获得更好的答案。

答案 3 :(得分:0)

非常简单的修复以渲染空间......

创建一个单元格渲染器并将其添加到组合框中,添加空格或只添加

setBorder(new EmptyBorder(1,1,1,1)); o细胞渲染器

或者

@Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

        JComponent comp = (JComponent) super.getListCellRendererComponent(list, " "+value, index, isSelected, cellHasFocus);

        return comp;
    }

@Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

        JComponent comp = (JComponent) super.getListCellRendererComponent(list,value, index, isSelected, cellHasFocus);
        comp.setBorder(new EmptyBorder(1, 1, 1, 1));
        return comp;
    }