1

我需要一些帮助来解决是否可以创建图标的 ArrayList<>,然后使用这些图标并将它们打印在接口 JLabel 中。我想做的是制作3个按钮,上面写着红色、绿色和蓝色。当你按下一个按钮时,它会形成一个该颜色的正方形。如果我按多次,它会生成多个正方形而不删除以前的正方形。

redBut.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                    icon.addIcon(new SquareIcon(50, Color.red));
                    label.setIcon(icon.getIcon(icon.getIconsSize()));
                    System.out.println(icon.getIconsSize());
                    frame.repaint();
                    frame.pack();
            }
    });

这是红色按钮,如您所见,当我按下它时,我在 ArrayList 中添加了一个新图标。之后,我尝试通过获取arraylist中某个索引上的图标来将标签设置为该图标,并通过找出arraylist的大小并将其减去1来获取索引号(因为arraylist从0开始) .

我使用 println 来测试它是否真的被添加到数组列表中。

但是我还是不能让它出现在界面上?而且,它可以与多个图标一起使用吗?


编辑:
当您多次单击按钮时,我试图让多个方块出现在窗口中(我认为它们被称为 JFrames?)。无论如何,您是说我只能创建一次图标,然后每次单击按钮时都创建一个新的 JLabel,并将它们存储在列表中,然后用其中一个图标填充 JLabel?

4

1 回答 1

2

你说:

我需要一些帮助来解决是否可以创建图标的 ArrayList<>,然后使用这些图标并将它们打印在接口 JLabel 中。

也许这不是解决您的问题的最佳方法...

我想做的是制作3个按钮,上面写着红色、绿色和蓝色。当你按下一个按钮时,它会形成一个该颜色的正方形。如果我按多次,它会生成多个正方形而不删除以前的正方形。

建议:

  • 我认为您不需要图标的 ArrayList。
  • 同样,只创建三个 Icon 对象和变量,一个 redIcon、greenIcon 和 blueIcon
  • 每次按下蓝色 JButton 时,使用 blueIcon 创建一个新的 JLabel 并将其添加到显示标签的 JPanel。
  • 在包含 JPanel 中添加或删除组件后,不要忘记在包含 JPanel 上调用revalidate()and repaint()revalidate()告诉 JPanel 重新布置其所有组件,包括添加的新组件,并且该调用repaint()有助于绘制容器上需要清理的任何“脏”区域。
  • 请注意,您可以在多个 JLabel 中多次重复使用相同的 ImageIcon。
于 2013-11-09T16:28:18.277 回答