JLabelを拡張するカスタムクラスがあります。そのクラスの特定のインスタンスについて、左側のテキストにスペースを追加したいと思います。このJLabelの背景を設定しているので、間隔が必要です。テキストが色付きの背景の端のすぐ隣にぶつからないようにします。私はかなり釣りをして、これを実装しました(ペイント機能内):
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呼び出しまで追跡しました...どんな種類の境界線を設定しても、同じ壊れた動作を引き起こすように見えます。アプリケーションには2つの異なるバージョンがあります。1つはJava1.5で実行され、もう1つはJava 1.6で実行されます。Java1.6バージョンは正しく機能しているように見えますが、Java1.5バージョンは機能していません。古いバージョンをJava1.6にアップグレードすることはできません...Java1.5で動作するものが必要です。また、私はこれを試しました(それがどのように見えるかを見るためだけに):
setHorizontalTextPosition(JLabel.CENTER);
そして、それもまったく同じように塗り直しを壊すように見えます。アプリケーションのソースを調べて、境界線を設定した他の場所(空の境界線を含む)を見つけましたが、JLabelには見つかりませんでした(パネル、ボタンなどのみ)。誰かが前にこのようなものを見ますか?それを修正する方法を知っていますか?または、バグを回避するために必要な間隔を取得する別の方法はありますか?ありがとう。