我是编程的新手,我想创建一个包含数千个J按钮的网格,这些J按钮的动作侦听器都是相同的,但它们可以独立工作,而无需对每个按钮进行编码。我将如何存档
答案 0 :(得分:1)
Hovercraft Full Of Eels
是正确的。你需要重新思考你想要做什么,这是一种令人讨厌的资源浪费,并且是一场等待发生的灾难。
你最好创建一个glass pane,它可以捕捉动作事件并根据它们的坐标触发动作。这将使用单个动作侦听器,而不是您想要超过1000个动作侦听器。
如果您想要视觉效果,只需覆盖要将按钮放入的容器的paint(Graphics g)
方法:Performing Custom Painting
但是,以下内容说明了您的要求。它使用for循环在GridLayout中创建按钮网格,但我强烈建议不要使用它:
public static void createGrid(JPanel panel, int numberOfRows, int numberOfColumns)
{
panel.setLayout(new GridLayout(numberOfRows, numberOfColumns));
for (int c = 0; c < numberOfColumns; c++)
{
for (int r = 0; r < numberOfRows; r++)
{
JButton button = new JButton();
button.addActionListener(new java.awt.event.ActionListener()
{
@Override
public void actionPerformed(java.awt.event.ActionEvent evt)
{
//Add your code here for action event
}
});
panel.add(button);
}
}
}