java - 我如何让听众注意到按下了哪个按钮

标签 java

我需要创建更多按钮。我该如何做到这一点,以便监听器知道 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/

相关文章:

java - 错误 : non-serializable attribute value into ViewMap

java - jFreeChart 在 Android 2.x 中工作/完成吗

java - 使用 Spring Boot 从不存在的地址发送邮件失败 : Requires password?

java - 如何在项目运行时更改 JFrame 背景图像

java - 尝试传递参数和打印时出现空指针异常

java - 主屏幕小部件中的自定义布局

java - AudioRecord增益控制获得嘈杂的声音

Java字节码到机器码

java - 将链表转换为 ArrayList

java - 有没有办法只播放视频中的音频?