2

我有两个JLists应该在JPanelwith中填充相同数量的空间GridBagLayout。目前它看起来像这样:

在此处输入图像描述

如图所示JList,大多数内容正在获得更多空间。试图给他们平等的空间:

bgConstraints.weightx = 0.5;

但剂量似乎没有像我希望的那样起作用。有什么想法可以使两者在内容和 JFrame 大小上JLists具有相同的width独立性(而不是必要的更宽)?

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class GridBagTest {

    public static void main(String[] arg){
        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 0.5;
        c.weighty = 1;
        panel.add(getList(2),c);
        panel.add(getList(10),c);

        // Show content
        JFrame frame = new JFrame();
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }

    /**
     * Creates a JList
     * @param strLength The length of the String in the List
     * @return A JList with a String and JScrollPane
     */
    private static JScrollPane getList(int strLength){
        DefaultListModel<String> listModel = new DefaultListModel<String>();  
        JList<String> list = new JList<String>(listModel);

        String str = "";
        for(int i=0; i<strLength; i++)
            str += i;

        listModel.addElement(str);
        JScrollPane pane = new JScrollPane(list);
        return pane;
    }
}
4

1 回答 1

3

采用

于 2013-07-04T07:36:48.030 回答