@Atreysが提供する答えは十分ですが、に複数の方法があります猫の皮膚には。別のオプションは、JLabel
を拡張し、そのコンストラクタ内に境界を割り当てるクラスを作成することです。したがって、すべてのインスタンスは、要求に応じて同じ境界線を持ちます。これにより、Component
のコレクションに対して不器用に反復する必要がなくなり、instanceof
演算子を使用してから実際にOOPでない型キャストを使用します。
public final class BorderedJLabel extends JLabel{
public BorderedJLabel(){
// assign border
}
}
補遺:
そして、あなたはそれぞれの新しいBorderedJLabel
インスタンスのnew BorderedJLabel()
を入力することの冗長性を避けたかったならば、あなたのような、staticファクトリメソッドを熟読でき
public final class BorderedJLabel extends JLabel{
private BorderedJLabel(){
// assign border
}
public static final BorderedJLabel newInstance(){
return new BorderedJLabel();
}
}
このデザインでは、単にBorderedJLabel.newInstance()
と入力すると、新しいBorderedJLabel
インスタンスをより簡潔に作成することができます。
出典
2011-08-04 12:39:26
mre
JLabelを構築するあらゆる方法で、MyJLabelを構築する適切な方法を追加する必要があります。これは、問題を解決するためのよりOOPの方法ですが、潜在的にはより多くの作業を必要とし、MyJLabelクラスを忘れてJLabelを「間違って」使用すると、境界が設定されません。 – Atreys
+1:このアプローチでは、あなたのコンポーネントにも同様に 'JLabel'という文字列を持たせることができます。 – pmnt
正しい提案+1 – mKorbel