【发布时间】:2013-04-07 13:42:27
【问题描述】:
我正在制作战舰游戏,我正在尝试找出一种方法来控制窗格中的按钮,以便我可以拖放它们并使用默认列表模型跟踪它们的索引。如果我添加字符串或 ImageIcons它工作正常,但使用按钮我得到了不同的东西。
这是我的代码:
public class ListModelExample extends JPanel {
JList list;
DefaultListModel model;
int counter = 15;
public ListModelExample() {
setLayout(new BorderLayout());
model = new DefaultListModel();
list = new JList(model);
JScrollPane pane = new JScrollPane(list);
JButton addButton = new JButton("Add Element");
JButton removeButton = new JButton("Remove Element");
final JButton button = new JButton("button");
for (int i = 0; i < 5; i++)
model.addElement(button);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addElement(button);
counter++;
}
});
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (model.getSize() > 0)
model.removeElementAt(0);
}
});
add(pane, BorderLayout.NORTH);
add(addButton, BorderLayout.WEST);
add(removeButton, BorderLayout.EAST);
}
public static void main(String s[]) {
JFrame frame = new JFrame("List Model Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new ListModelExample());
frame.setSize(260, 200);
frame.setVisible(true);
}
}
如果我添加按钮,我会得到以下结果:
所以我的问题是:如何让按钮正常显示而不是默认列表模型中的文本?
【问题讨论】:
-
为什么要将按钮添加到列表中?
-
您可以使用“setName(String n)”方法..添加一个静态计数器..并为每个按钮将其转换为字符串并使用它设置按钮名称..然后通过按钮检查说出他的位置和所有你想要的东西..
-
组件应该永远放置在 Swing 组件模型中。 1+ mKorbel 的回答。
标签: java swing jlist listcellrenderer