0

列にラベルが付いた行のリストを作成しようとしています。gridbaglayout を使用しようとしていますが、問題が発生しています。ウィンドウを拡大しても拡大しません。これが起こることです: ここに画像の説明を入力

私が本当に欲しいのは、レイアウト内のセルがスペースの 1/5 を占め、ラベルがセルの左端に移​​動することです。

   public static JPanel createLayout(int rows) {
    JPanel product = new JPanel(new GridBagLayout());
    String[] lables = {"School", "Advanced #", "Novice #"};
    double weight = 1/(lables.length);
    for (int i = 0; i < rows; i++) {
        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(3, 3, 3, 3);
        c.anchor = GridBagConstraints.WEST;
        c.gridx = i;
        c.weightx = weight;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.anchor = GridBagConstraints.NORTHWEST;
        for (int j = 0; j < lables.length; j++) {

            JLabel l = new JLabel(lables[j]);
            product.add(l, c);
        }
    }
    return product;
}

public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("Debate Calculator");
    JPanel debates = new JPanel();
    frame.add(createLayout(5), BorderLayout.CENTER);
    frame.pack();
    frame.setVisible(true);
     }
4

1 に答える 1

2

問題はあなたの体重計算にあると思います...

double weight = 1/(lables.length);

1とはどちらも int 値であるため、Java は自動的に結果を(つまり)lables.lengthに変換します。 int0

代わりに、次のようなものを試してください...

double weight = 1d/(double)lables.length;
于 2013-04-28T21:59:51.943 に答える