リストの各項目にサブリストと呼ぶと思われるものを追加しようとしています。以下の出力を提供するカスタムレンダラーを構築しました。ご覧のとおり、ここで何かが正しくないため、問題の答えを突き止めることができませんでした。正しい結果を得るには、パネルのレイアウトで何かを変更する必要があると思いますが、何がわかりません。
http://i.stack.imgur.com/jCKjJ.jpg
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.util.Random;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.ListCellRenderer;
import javax.swing.border.EmptyBorder;
public class GAListRendererAdv extends Container implements ListCellRenderer {
private static final long serialVersionUID = 1L;
private JPanel pnl = new JPanel();
private Random rnd = new Random();
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
pnl.setLayout(new BorderLayout(0, 0));
JCheckBox chckbxSomething = new JCheckBox("something");
pnl.add(chckbxSomething, BorderLayout.NORTH);
JSeparator separator = new JSeparator();
pnl.add(separator, BorderLayout.CENTER);
JPanel panel_1 = new JPanel();
panel_1.setBorder(new EmptyBorder(0, 35, 0, 0));
pnl.add(panel_1, BorderLayout.SOUTH);
panel_1.setLayout(new GridLayout(0, 1, 0, 0));
int rndNum = rnd.nextInt(5) + 1;
for (int i = 0; i < rndNum; i ++) {
JLabel lblNewLabel2 = new JLabel("New label");
panel_1.add(lblNewLabel2);
}
return pnl;
}
}