-1

特定の座標(40,80)の画像を含むこのJLabelを表示するのに問題があります。誰かが私がここで間違っていることを教えてもらえますか?

import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;

public class Window extends JFrame{
//the pictures
JLabel guy = new JLabel(new ImageIcon("tester.gif"));
JPanel panel = new JPanel();

Window(){

    super("WindowTitleThing");
    setSize(700,600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    guy.setAlignmentX(40);
    guy.setAlignmentY(80);

    add(panel);
    panel.add(guy);

    setVisible(true);
}
}
4

2 に答える 2

1

これは setAlignmentX と setAlignmentY がどのように機能するか、またはその目的ではありません。コンポーネントを保持するコンテナがコンポーネントを配置する場所を決定するのに役立つように、0.0f、0.5f、または 1.0f の float 値を取得します。これらのメソッドの API を読んでください。

いずれにせよ、ハードコードされた数字に基づいてコンポーネントを配置するよりも、レイアウト マネージャーを使用してコンポーネントの適切なサイズと配置を設定できるようにする方が、長期的にははるかに優れていることがわかります。

于 2012-06-03T19:46:30.433 に答える
1

JPanel のレイアウト マネージャーをコードのどこかに設定しているようには見えません。Swing を使用する場合、すべてのコンテナには、対応するコンテナへのコンポーネントの配置を処理する LayoutManager があります (使用方法については、 http://docs.oracle.com/javase/tutorial/uiswing/layout/using.htmlを参照してください)。レイアウト マネージャー)。

あなたの場合のようにコンポーネントを固定座標に配置する場合は、JPanel で絶対レイアウトを設定する必要があります。

panel.setLayout(null);

次に、setBounds メソッドを使用して、追加したいコンポーネントを配置できます。

guy.setBounds(x,y,width,length);

より大きなUIにはレイアウトマネージャーを使用します。

于 2012-06-03T19:47:44.707 に答える