7

別の JLabel の上に JLabel を追加することは可能ですか? ありがとう。

4

5 に答える 5

8

JLabelaは aであるため、簡単な答えは「はい」です。したがって、メソッドを使用してa (aは のサブクラスです) をContainer受け入れてに追加できます。ComponentJLabelComponentJLabeladd

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 ManagersA 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"));

上記の例では、はレイアウト マネージャーとしてJPanela を使用するように作成され、 s の行を作成するように指示されます。GridLayoutJLabel

于 2009-10-03T08:26:27.697 に答える
1

任意のコンポーネントをコンテナに追加できるという理由から、元の質問に対する答えは「はい」です。

2 番目のラベルが表示されない理由は、デフォルトで JLabel が null レイアウト マネージャーを使用し、2 番目のラベルのサイズが (0, 0) であるため、ペイントするものが何もないためです。したがって、2 番目のラベルの境界を設定するだけで済みます。

フレームなどのサイズを変更するとすぐにレイアウトマネージャーが呼び出され、コンポーネントのレイアウトマネージャーに基づいてコンポーネントが再配置されるため、コンポーネントをドラッグしたい場合はレイアウトマネージャーを使用できません。

于 2009-10-04T00:15:31.537 に答える
0

を使用してJLayeredPane、境界線を境界線なしに設定できます。

于 2010-08-01T20:53:13.187 に答える
0

それはレイアウトの問題です。null レイアウト (ハードコードされた場所) またはカスタム レイアウトを使用してそれを行うことができます。

于 2009-10-03T08:45:36.550 に答える