別の JLabel の上に JLabel を追加することは可能ですか? ありがとう。
5 に答える
JLabel
aは aであるため、簡単な答えは「はい」です。したがって、メソッドを使用してa (aは のサブクラスです) をContainer
受け入れてに追加できます。Component
JLabel
Component
JLabel
add
JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);
上記のコードでは、insideLabel
が に追加されoutsideLabel
ます。
ただし、視覚的には「Hello」というテキストのラベルが表示されるため、ラベルに含まれるラベルを実際に見ることはできません。
したがって、別のラベルの上にラベルを追加することによって、実際に何を達成したいのかという問題が生じます。
編集:
コメントから:
さて、私がやりたかったのは、最初にファイルから特定の部分を読み取り、その部分をjlabelに表示することでした。私が考えたのは、分数を3つの部分に分割し、3つのそれぞれにラベルを使用することでした. 次に、分数をドラッグできるようにしたいので、別の jlabel を使用して、3'mini jlabels' を大きな jlabel の上に配置できると考えました。これが機能するかどうかはわかりません..:|
Javaでレイアウトマネージャーを使用する方法を検討する必要があるようです。
開始するのに適した場所は、どちらもThe Java Tutorials のUsing Layout ManagersとA Visual Guide to Layout Managersです。
タスクを達成するための 1 つのオプションのようにGridLayout
思えます。
JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));
上記の例では、はレイアウト マネージャーとしてJPanel
a を使用するように作成され、 s の行を作成するように指示されます。GridLayout
JLabel
任意のコンポーネントをコンテナに追加できるという理由から、元の質問に対する答えは「はい」です。
2 番目のラベルが表示されない理由は、デフォルトで JLabel が null レイアウト マネージャーを使用し、2 番目のラベルのサイズが (0, 0) であるため、ペイントするものが何もないためです。したがって、2 番目のラベルの境界を設定するだけで済みます。
フレームなどのサイズを変更するとすぐにレイアウトマネージャーが呼び出され、コンポーネントのレイアウトマネージャーに基づいてコンポーネントが再配置されるため、コンポーネントをドラッグしたい場合はレイアウトマネージャーを使用できません。
を使用してJLayeredPane
、境界線を境界線なしに設定できます。
それはレイアウトの問題です。null レイアウト (ハードコードされた場所) またはカスタム レイアウトを使用してそれを行うことができます。