我需要创建更多按钮。我该如何做到这一点,以便监听器知道 b1 已被按下,并将背景更改为鲑鱼的 HashMap 值。这样,当我创建更多按钮时,它会知道按下了哪个按钮,并将背景更改为与该按钮关联的颜色。我不知道该怎么办。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
public class Collection extends JFrame {
JPanel panel1 = new JPanel();
public Collection(){
Listen react = new Listen();
Map<String, String> hashmap = new HashMap<String, String>();
setLayout(new BorderLayout());
hashmap.put("Salmon","#FA8072" );
JRadioButton b1 = new JRadioButton(hashmap.get("Salmon"));
b1.addActionListener(react);
panel1.add(b1);
add(panel1, BorderLayout.CENTER);
}
class Listen implements ActionListener{
public void actionPerformed(ActionEvent e){
panel1.setBackground();}}
public static void main(String[] args){
Collection c = new Collection();
c.setSize(300,300);
c.setLocationRelativeTo(null);
c.setTitle("colors");
c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
c.setVisible(true);
}}
最佳答案
在方法 public void actionPerformed(ActionEvent e)
中,您可以使用 e.getSource()
来确定事件的来源。您可以使用 b1.setName
设置按钮的名称,然后执行类似 ((JRadioButton)e.getSource()).getName()
的操作来检索它并确定按下了哪个按钮。或者,您可以使用 b1.putClientProperty("id", someObject)
达到相同目的。
关于java - 我如何让听众注意到按下了哪个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462674/