3

これは私が達成しようとしているものです:

   |--0--|--1--|--2--|--3--|--4--|--5--|--6--|--7--|--8--|--9--|
0  |     |JLabe|l----|-----|-----|-----|-----|-----|-----|-----|
1  |     |     |JLabe|l----|-----|-----|-----|-----|-----|-----|
2  |     |     |     |JLabe|l----|-----|-----|-----|-----|-----|
3  |     |     |     |JLabe|l----|-----|-----|-----|-----|-----|

これは私がこれまでに得たものであり、これは私が求めているものに到達できる限り近いものです.

        center.setLayout(centerLayout);
    JPanel[] card = new JPanel[1]; //update as it gets longer, eventually Scoreboard.LENGTH
    card[0] = new JPanel();
    GridBagLayout cardLayout = new GridBagLayout();
    card[0].setLayout(cardLayout);
    cardLayout.setConstraints(winner, new GridBagConstraints(0, 0, 10, 1, 1, 0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0));
    card[0].add(winner);
    cardLayout.setConstraints(name, new GridBagConstraints(1, 1, 9, 1, 0.8, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0));
    card[0].add(name);
    cardLayout.setConstraints(with, new GridBagConstraints(2, 2, 8, 1, 0.7, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0));
    card[0].add(with);
    cardLayout.setConstraints(score, new GridBagConstraints(2, 3, 8, 1, 0.7, 0, GridBagConstraints.LAST_LINE_START, GridBagConstraints.NONE, new Insets(0,0,0,0), 0, 0));
    card[0].add(score);
    center.add(card[0], "card1");
    this.getContentPane().add(center);

そして、何らかの理由で次のように表示されます。

   |--0--|--1--|--2--|--3--|--4--|--5--|--6--|--7--|--8--|--9--|
0  |JLabe|l----|-----|-----|-----|-----|-----|-----|-----|-----|
1  |JLabe|l----|-----|-----|-----|-----|-----|-----|-----|-----|
2  |JLabe|l----|-----|-----|-----|-----|-----|-----|-----|-----|
3  |JLabe|l----|-----|-----|-----|-----|-----|-----|-----|-----|

GridBagLayout を使用するよりも、テキストをレイアウトするためのより適切な方法があるかもしれません。(異なる解像度で動作する必要があるため、どのレイアウト マネージャーを使用しても柔軟である必要があります)

4

1 に答える 1

1

1)GridBagLayout変数「cardLayout」に名前を付けるのは最善のアイデアではありません、IMO。

2)コードスニペットのみを提供し、 SSCCEを提供しなかったため、提供された「写真」のみに基づいて推測することしかできません。GridBagLayout では、サイズを定義するために各行/列にコンポーネントが必要です。特定の列は、その列で見つかった最も広い優先サイズを持つコンポーネントと同じ幅になります。高さについても同様です。したがって、結果の図に基づいて、推奨される幅を持つコンポーネントは列 0 にありません。回避策の 1 つはBox.createHorizontalStrut(someWidth)、目的の列に a を配置することです。

于 2013-06-22T13:50:21.637 に答える