如何在matteborder中的图标周围添加空格

时间:2018-06-15 12:16:03

标签: java swing

我使用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。我知道我可以在图像文件周围添加空格,但是在其他周围不应该有任何空格的情况下使用它。

2 个答案:

答案 0 :(得分:1)

  

我的问题是图标右侧没有空格(用户输入文字的位置)。

如何使用第二个CompoundBorder在边框内部添加额外空间?

另一种可能性是使用Component Border,它允许您将组件添加到边框。所以你可以添加带有Icon的JLabel。

答案 1 :(得分:1)

由于MatteBorder总是平铺图标,我不会使用它。我只想写一个自定义边框:

{{1}}