有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

awt如何在actionListener(java)中共享变量

我正在尝试创建一个首选项菜单,并尝试共享action listener中的一个变量。提前谢谢

public void actionPerformed(ActionEvent e) {
    if(e.getSource()==buttonp1) {
        player_c=c1.getText();
        if(player_c.equalsIgnoreCase("blue")) {
            p1_color="blue";
    //i want to share a String with another class.
        }
        if(player_c.equalsIgnoreCase("red")) {
            p1_color="red";
        }
        if(player_c.equalsIgnoreCase("green")) {
            p1_color="green";
        }
    }
} 

共 (1) 个答案

  1. # 1 楼答案

    将变量移动到另一个类,并将实例传递给侦听器(可能是通过词法范围)

    class Player {
        private String color;
        // ...
        public void setColor(String color) {
            this.color = Objects.requireNonNull(color);
        }
    }
    
    // ...
    
       Player p1 = ...;
       // (Watch the repetition.)
       blue.addActionListener(event -> {
           p1.setColor("blue");
       });
       red.addActionListener(event -> {
           p1.setColor("red");
       });
       green.addActionListener(event -> {
           p1.setColor("green");
       });
       // ...