想象一下Panel
,其垂直顺序为JCombobox
和JTextfield
。
Textfield
显示其内容,左边有一个小填充,Combobox
没有。
有人知道如何将此填充添加到JCombobx
吗?
我尝试过设置渲染器,但javadoc说:
设置绘制列表项和所选项的渲染器 从列表中 JComboBox字段。如果JComboBox不是,则使用渲染器 编辑。如果它是可编辑的,则编辑器用于渲染和编辑 所选项目。
祝你好运 马可
答案 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;
}