簡體   English   中英

如何讓聽眾注意按下哪個按鈕

[英]how do i make the listener notice which button is pressed

我需要創建更多按鈕。 如何讓聽眾知道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)來實現相同的目的。

嘗試將顏色信息添加到Listen類:創建一個構造函數,該構造函數接受一個Color或String,用於保存每個Listen實例的顏色信息。 然后,在調用panel1.setBackground()的地方,使用存儲的顏色信息指定那里的顏色。

也許是這樣的:

class Listen implements ActionListener {
     Color myColor;
     public Listen (Color newColor) {
           myColor = newColor;
     }
     public void actionPerformed (ActionEvent e) {
           panel1.setBackground(myColor);
     }
}

然后在你的Collection類中

Listen react = new Listen();

Listen react = new Listen(hashmap.get("Salmon"));

因此,當您單擊按鈕時,面板變黑。 我想你必須重新設計你的HashMap系統,我認為這很棒,但它必須將字符串映射到顏色。 您可以使用Color構造函數來獲取可以指定特定顏色的紅色,藍色和綠色值。 例如,你的鮭魚顏色將是FA = 250,80 = 128,72 = 114,所以hashmap.put(“Salmon”,new Color(250,128,114));

如果您有任何疑問,請告訴我們!

查看觀察者模式。 您可以將觀察者附加到對象上,該對象將根據觀察的內容更改其附加的對象。 您可以根據需要添加盡可能多的觀察者,並相應地更改附件的狀態。 這適用於動作偵聽器和按鈕偵聽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM