0

コンポーネントを特定の場所に表示する必要があります。のように表示しようとしていますJLabelが、

label1:

label2:

ただし、以下のコードでは、次のように表示されます。

label1 : label2: 

JFrame myFrame = new JFrame("My Frame");
Container container = myFrame.getContentPane();

JPanel jPanel=new JPanel(new FlowLayout(FlowLayout.LEFT));
//jPanel.setLayout(null);

JLabel jLabel1=new JLabel("Label 1 : ");
JLabel jLabel2=new JLabel("Label 2 : ");

jLabel1.setLocation(10, 50);
jLabel2.setLocation(10, 80);

jPanel.add(jLabel1);
jPanel.add(jLabel2);

myFrame.setVisible(true);
myFrame.setResizable(false);

container.add(jPanel);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.pack();

jPanel.setLayout(null);メソッドが呼び出された場合、 には何も表示されませんJFrame

の特定の場所にコンポーネントを表示するJPanel方法

4

1 に答える 1

3

nullレイアウトは一般的に悪い考えなので、避けるのが最善です。垂直列に使用できるレイアウト マネージャーがいくつかあります。最も明白なのは、垂直方向のBoxLayoutです。

jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));

もう 1 つは、1 つの列と自動的に決定される行を持つGridLayout です。

jPanel.setLayout(new GridLayout(0, 1));

コンポーネントのsetLocation()境界を決定するのはレイアウト マネージャーの仕事であるため、呼び出しは不要です。(これはnullレイアウトケースの問題です。そうする場合、すべてのコンポーネントの境界処理を手動で処理する必要があります-強くお勧めしません)。

編集: @camickr が指摘したように、正しいレイアウト マネージャーを選択しようとするときに役立つリソースは、レイアウト マネージャーのビジュアル ガイドです。

于 2013-09-14T14:39:52.040 に答える