1

私はJava3Dを使用して固体物理学の紹介をしています。内部の多くの3Dを調べた後、さまざまなものをテストするためにいくつかのボタンを配置することにしました。私の問題はここに現れました。

次の図では、setLayout(null)を使用してボタンとCanvas3Dを配置していました。

ここに画像の説明を入力してください

私がここで欲しくないのは:

  • Canvas3Dはボタンと重なります。
  • Canvas3Dは、画像サイズ/ウィンドウサイズの同じ比率を維持するために拡大されないため、ウィンドウのサイズを変更すると、同じサイズになります。

次に、Canvas3Dで、ボタンに「南」、「西」、「東」を使用してsetLayout(new BorderLayout());みました。add("Center",component);下の写真はケースを示しています:

ここに画像の説明を入力してください

これは見た目は良くなりますが、今回は別の問題が発生します。

  • ボタンは私が望んでいたサイズではなく(ウィンドウに伸びる)、私が望んでいたオフセット位置にありません。
  • 「南」のように同じエリアに2つ置くとボタンも重なります。

質問: Canvas3Dと重ならないように、ボタンが希望の位置(x、y)にあり、希望のサイズ(h、w)になっているときに、Canvas3Dをウィンドウに拡大するにはどうすればよいですか。Canvas3DとButtonsの異なるレイアウトを試しました->失敗しました。1つのレイアウトのみが表示されています。

お時間をいただきありがとうございます。

Java3D1.5.2およびEclipse。WindowsXPとIntelCentrino

4

1 に答える 1

1

これは実際には Java3D の問題ではなく、Swing レイアウトの問題です。

正しい解決策は、どのように表示するかにもよりますが、おそらくある種のネストされたレイアウトです。

たとえば、ボタンの北側または西側にネストされた FlowLayout を使用してボーダー レイアウトを試すことができます。これは、探しているものにおそらく近いでしょう。以下のようなものを試して、必要に応じてカスタマイズしてください。

JPanel rootPanel = new JPanel(new BorderLayout());
JPanel controlPanel = new JPanel(new FlowLayout());
controlPanel.add(new JButton("Alpha"));
controlPanel.add(new JButton("Beta"));
controlPanel.add(new JButton("Gamma"));
rootPanel.add(controlPanel, BorderLayout.NORTH);
rootPanel.add(myCanvas3D, BorderLayout.CENTER);
于 2013-03-18T16:38:22.010 に答える