我有一个扩展 JLabel 的自定义类。对于该类的特定实例,我想在左侧的文本中添加一些间距。我需要间距,因为我正在设置这个 JLabel 的背景,我不希望文本在彩色背景的边缘附近出现。我摸索了很多并实现了这个(在paint函数中):
if (condition) {
bgColor = Color.red;
setBackground(bgColor);
setOpaque(true);
// This line merely adds some padding on the left
setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
}
else {
setOpaque(false);
}
这似乎有效,因为它增加了我想要的间距,但是它有一个不幸的副作用,因为它似乎破坏了整个应用程序其余部分的重绘......似乎只有那个特定的组件正在重绘,而不是应用程序的其余部分。我最终将其具体追踪到 setBorder 调用...设置任何类型的边框似乎都会导致相同的损坏行为。我们有两个不同版本的应用程序,一个在 Java 1.5 中运行,一个在 Java 1.6 中运行,Java 1.6 版本似乎可以正常工作,而 Java 1.5 版本则不能。无法将旧版本升级到 Java 1.6...我需要可以在 Java 1.5 中使用的东西。另外,我试过这个(只是想看看它是什么样子):
setHorizontalTextPosition(JLabel.CENTER);
这似乎也以完全相同的方式破坏了重新绘制。我查看了我们应用程序的源代码,发现了我们设置边框的其他地方(包括空边框),但在 JLabels 上找不到任何地方(只有面板、按钮等)。有人以前见过这样的东西吗?知道如何解决吗?或者也许是另一种获得我需要的间距的方法可以解决这个错误?谢谢。