我使用MatteBorder
进行了实验,以便在JTextField
的开头显示一个图标(类似于在文本字段中显示的搜索图标)。
这是我目前的实施:
JTextField textField = new JTextField("Filter", 8);
textField.setPreferredSize(new Dimension(getPreferredSize().width, 24));
Border outer = textField.getBorder();
// ugly workaround
Border padding = BorderFactory.createEmptyBorder(2, 2, 2, 2);
Border search = new MatteBorder(0, 16, 0, 0, icon);
textField.setBorder(new CompoundBorder(new CompoundBorder(outer, padding), search));
图标是一个16x16px图标,周围没有空格。文本域高24px。我介绍了一个填充边框,在图标周围有一些空格(否则它会显示一个完整的图标,下面的图标的前4px)。我的问题是图标右侧没有空格(用户输入文本的地方)。
问题:有没有办法在图像周围有一定数量的空白,所以它没有平铺?我可以以某种方式添加"填充"在我将其添加到MatteBorder
之前的图标周围?
P.S。我知道我可以在图像文件周围添加空格,但是在其他周围不应该有任何空格的情况下使用它。
答案 0 :(得分:1)
我的问题是图标右侧没有空格(用户输入文字的位置)。
如何使用第二个CompoundBorder
在边框内部添加额外空间?
另一种可能性是使用Component Border,它允许您将组件添加到边框。所以你可以添加带有Icon的JLabel。
答案 1 :(得分:1)
由于MatteBorder总是平铺图标,我不会使用它。我只想写一个自定义边框:
{{1}}