1

初心者の Java プログラマーこんにちは。彼らはお互いをカバーしているようです。私は 3 つのレイアウト マネージャーについて読んできましたが、それらに関する簡単なチュートリアルが見つからないようです。

    //Size and positioning
    setSize(500,400);
    setLocationRelativeTo(null);

    //Set Frame Background color

    //Set Labels
    JLabel labelTitle = new JLabel("<html><center>My CD/DVD Collection</center></html>",null,JLabel.CENTER);
    labelTitle.setFont(new Font("Arial",0 , 28));
    labelTitle.setVerticalAlignment(JLabel.TOP);
    add(labelTitle);
    labelTitle.setBorder(BorderFactory.createEmptyBorder( 50 /*top*/, 0, 0, 0 ));

    JLabel labelContent = new JLabel("<html><center> created by Daniel Del Core <br> Java</center></html>",null,JLabel.CENTER);

    add(labelContent);

助けてくれてありがとう:)

4

3 に答える 3

3

JFrameあなたのコードは要素をorに直接追加していJDialogますが、これにはデフォルトで があるBorderLayoutため、すべてのラベルは になりますBorderLayout.CENTER。これがそれらが重なる理由です。

コードに を使用する例を次に示しFlowLayoutます。パネルを使用してラベルを追加していて、パネルがウィンドウのコンテンツ ペインに追加されていることに注意してください。

JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
//Set Labels
JLabel labelTitle = new JLabel("<html><center>My CD/DVD Collection</center></html>",null,JLabel.CENTER);
labelTitle.setFont(new Font("Arial",0 , 28));
labelTitle.setVerticalAlignment(JLabel.TOP);
panel.add(labelTitle);
labelTitle.setBorder(BorderFactory.createEmptyBorder( 50 /*top*/, 0, 0, 0 ));

JLabel labelContent = new JLabel("<html><center> created by Daniel Del Core <br> for <br> Java Programming and Applications</center></html>",null,JLabel.CENTER);
panel.add(labelContent);
getContentPane().add(panel);
于 2012-09-21T12:12:49.717 に答える
3

に対してこれらのメソッドを呼び出していると推測していますJFrame。を呼び出すadd()と、JFrame実際にはJFrame( JFrame.getContentPane()) のコンテンツ ペインにコンポーネントが追加されます。デフォルトでは、コンテンツ ペインはBorderLayout. を使用するコンテナに拘束のないコンポーネントを追加するときは、BorderLayoutそれらを中央に追加します。一度に 1 つのコンポーネントしか中央に表示できないため、表示されるコンポーネントは 1 つだけです。

これを試してください(効果を確認するためだけに):

getContentPane().setLayout(new FlowLayout());

そして、これらのチュートリアルを見てください:

于 2012-09-21T12:12:54.877 に答える
1

他の回答に加えて、Swing コンポーネントを縦に積み重ねる場合は、BoxLayoutレイアウト マネージャーを使用します。詳細については、BoxLayout の使用方法 を参照してください。

于 2012-09-21T12:43:34.400 に答える