NetBeans GUI 편집기를 사용하여 학교용 볼링 프로그램을 만듭니다. JPanel을 JList에 추가 할 수 있습니까? 그렇다면 어떻게?JList에 JPanel을 추가 하시겠습니까?
2
A
답변
4
실제로는 가능하지 않습니다 (예상대로 동작하지 않습니다) - 실제로 원하는 것은 수직 또는 수평 목록에 구성 요소를 배치하는 목록 LayoutManager
입니다. 따라서 JList
을 사용하는 대신 JPanel
을 목록 형식의 레이아웃 관리자와 함께 사용하십시오.
이 시도 :
BoxLayout
는GridLayout
는 단일 열/행의 모든 JPanels
을 넣어 그들에게 모두 같은 크기로 만들 것입니다 단일 열/행의 모든 JPanels
을 넣어 것입니다
1
1
시도해보십시오. 그것은 나를 위해 일합니다.
class PanelRenderer implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JPanel renderer = (JPanel) value;
renderer.setBackground(isSelected ? Color.red : list.getBackground());
return renderer;
}
}
public void ShowItemList(List<JPanel> paneList, JPanel container) {
DefaultListModel model = new DefaultListModel();
for (JPanel pane:paneList) {
model.addElement(pane);
}
final JList list = new JList(model);
list.setFixedCellHeight(40);
list.setSelectedIndex(-1);
list.setCellRenderer(new JPanelToJList.PanelRenderer());
JScrollPane scroll1 = new JScrollPane(list);
final JScrollBar scrollBar = scroll1.getVerticalScrollBar();
scrollBar.addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("JScrollBar's current value = " + scrollBar.getValue());
}
});
container.add(scroll1);
}