如果可以创建一个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测试它是否实际被添加到arraylist。
但我还是不能让它出现在界面上?而且,它可以使用多个图标吗?
修改
当你在按钮上多次单击时,我试图在窗口中显示多个方块(JFrames,我认为它们被称为?)。无论如何,你说我只能创建一次图标,然后每次点击一个按钮创建一个新的JLabel,并将它们存储在一个列表中,然后用其中一个图标填充JLabel?
答案 0 :(得分:2)
你说:
如果可以创建一个ArrayList<>,我需要帮助解决问题。的图标,然后使用这些图标并在界面JLabel中打印出来。
也许这不是解决问题的最佳方法......
我要做的是制作3个按钮,上面有红色,绿色和蓝色。当您按下按钮时,它会以该颜色形成正方形。如果我多次按下,它会生成多个正方形而不删除之前的正方形。
建议:
revalidate()
和repaint()
。 revalidate()
告诉JPanel重新布局其所有组件,包括添加的新组件,repaint()
调用有助于绘制容器上需要清理的任何“脏”区域