ここに設計上の問題があります。実装できると思われるオプションが 2 つありますが、どちらも好きではありません。
JPanel で 2 つの機能を提供する必要があります。
- 数本の線を引く
- いくつかの文字列を描く
広告
- アプローチ延長2回
線を引くだけでよい場合は、次の回答からソリューションをコピーして貼り付けることができます。
public class LinePanel extends JPanel {
...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
しかし、2番目の機能を追加する必要があるので、このようなことをする必要があります
public class LineStringPanel extends JPanel {
これにより、LinePanel は役に立たない中間クラスのままになります。
- LineDrawer と StringDrawer の 2 つのクラスを作成し、JPanel をパラメーターとして、描画を実行する何らかのメソッドに渡します。ここで私が呼び出す必要がある問題は、推奨されていません。
Graphics g = panel.getGraphics();
あなたは何を考え、お勧めできますか?
UPD: JPanel 内には、ユニットと特性を表す多数の JLabels が子として存在します。
線はユニットのいくつかの特性間の関係であり、文字列はいくつかのアクションの一種の通知です。
そこで、子 JLabels の上部 (前面) に String を表示したいと思います。
また、JPanel は JScrollPane 内にあります。