我想在JList
中添加/删除按钮。我怎么能这样做?
答案 0 :(得分:2)
或者,请考虑按钮友好JToolBar
,如How to Use Tool Bars。
答案 1 :(得分:2)
@rohit我想知道,你在JList中需要什么?如果你想垂直放置它们,你应该使用一些布局管理器,例如BoxLayout或(更好)GridLayout。
你真的没有理由在JList中有按钮,在面板中有按钮会有相同的结果。
认真尝试重新考虑您的设计,并使用更灵活,更简单的设计,使用布局管理器。
一切顺利,博罗。
答案 2 :(得分:1)
查看Oracle Swing教程,了解如何使用列表:
http://download.oracle.com/javase/tutorial/uiswing/components/list.html
答案 3 :(得分:0)
JList.addElement()和JList.removeElement可用于向JLists添加和删除元素。
答案 4 :(得分:0)
我使用了这段代码。试试吧
class PanelRenderer implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JButton renderer = (JButton) value;
renderer.setBackground(isSelected ? Color.red : list.getBackground());
return renderer;
}
}
public void ShowItemList(List<JButton> buttonList, JPanel container) {
DefaultListModel model = new DefaultListModel();
for (JButton b:buttonList) {
model.addElement(b);
}
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.removeAll();
container.add(scroll1);
}
如果要添加JButton,请将其添加到列表中。如果要删除,请将其从列表中删除并再次运行该方法。