0

次のようなテキストのリストを作成しようとしています。

画像1

私はこのコードを持っています:

panelPunts = new JPanel();
panelPunts.setBackground(Color.GRAY);
biggerPanel.add(panelPunts, BorderLayout.EAST);

JLabel titol = new JLabel();
titol.setText("<html><h1><u> Points</u></h1></html>");
titol.setBounds(0, 0, 200, 50);
panelPunts.add(titol);

JLabel etnia1 = new JLabel();
etnia1.setText("Team A: 20");
etnia1.setBounds(0, 20, 200, 50);
panelPunts.add(etnia1);

JLabel etnia2 = new JLabel();
etnia2.setText("Team A: 10");
etnia2.setBounds(0, 40, 200, 50);
panelPunts.add(etnia2);

ただし、次のようになります。

画像2

メソッドの 2 番目のパラメーターsetBounds()は Y 位置であると読みましたが、非常に高くしても変化しません。正しく表示されないのはなぜですか?

4

2 に答える 2

1

試してみてください

JPanel panelPunts = new JPanel();

panelPunts.setLayout(new GridLayout(3,1));

JPanelデフォルトでは を使用し、使用FlowLayoutしないでくださいsetBounds()。コンポーネントの位置を設定するのはレイアウト マネージャーに任せます

より多くのサンプル コードについては、A Visual Guide to Layout Managers をご覧ください。


ヒント:ヘッダーから最後の 2 つのラベルを分離するだけです。別のラベルを追加するJPanel

サンプルコード: ( GridBagLayoutを使用)

    JPanel panelPunts = new JPanel();
    panelPunts.setLayout(new GridBagLayout());
    panelPunts.setBackground(Color.GRAY);

    GridBagConstraints gc = new GridBagConstraints();
    gc.gridx = 0;
    gc.gridy = 0;
    gc.anchor = GridBagConstraints.NORTH;
    gc.insets = new Insets(5, 5, 5, 5);

    JLabel titol = new JLabel();
    titol.setText("<html><h1><u> Points</u></h1></html>");
    panelPunts.add(titol, gc);

    gc.gridy = 1;
    JLabel etnia1 = new JLabel();
    etnia1.setText("Team A: 20");
    panelPunts.add(etnia1, gc);

    gc.gridy = 2;
    JLabel etnia2 = new JLabel();
    etnia2.setText("Team A: 10");
    panelPunts.add(etnia2, gc);
于 2014-05-02T11:28:18.590 に答える
1

NullLayout以外の LayoutManagerは使用しないでください( の使用を検討してくださいGridLayout)。を初期化するときの標準レイアウトであり、使用している FlowLayout はJPanel、このタスクには適していません。また、setBoundsメソッド呼び出しは NullLayout を使用する場合にのみ関連します...これはすべきではありません。JListまた、これを複数ではなくa で実装することもできますJLabels。この情報を使用してコードを変更することを検討してください。質問が残っている場合は、回答を更新してください。

于 2014-05-02T11:28:32.437 に答える