多个按钮单击鼠标

时间:2018-11-03 12:38:50

标签: java swing jbutton

这是我的代码:

package saaaaaaaaaa;

public class xd {
    public static JFrame frame = new JFrame("Halo");
    public static JLabel lab = new JLabel("learning ",JLabel.CENTER);
    public static JButton but = new JButton("but");
    public static JButton but1 = new JButton("butt");
    public static CustomAct act = new CustomAct(lab);

    public static void main(String[] args) {
        but.addMouseListener(act);
        but1.addMouseListener(act);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(640, 480);
        frame.setLayout(new BorderLayout());
        frame.setResizable(false);
        frame.add(lab, BorderLayout.CENTER);
        frame.add(but, BorderLayout.SOUTH);
        frame.add(but1, BorderLayout.NORTH);
    }
}

这是鼠标单击的额外类,我需要2次鼠标单击才能单击2个按钮。

package saaaaaaaaaa;

public class CustomAct implements MouseListener {
    private static final long serialVersionUID = 1L;
    private String halo = "this is ";
    private int getClickCount = 1;
    private JLabel lab;
    private JLabel lab1;

    public CustomAct(JLabel lab) {
        this.lab = lab;
    }

    public void mouseClicked(MouseEvent e) {
        if(e.getSource()==but) {
            lab.setText("cau"+getClickCount++);
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
    }

    @Override
    public void mouseExited(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }
}

如何为每个不同的鼠标单击操作设置多个按钮?

如何获取已使用的按钮ID?

这是if(e.getSource()==but) ---但无法解析为变量

我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

首先,您不使用MouseListener来监听按钮的点击。

相反,您应该使用ActionListener

如果每个按钮的Action不相关,则需要为每个按钮创建一个单独的ActionListener,每个ActionListener包含该按钮的特定代码。例如,简单计算器的“添加”和“减”方法将需要单独的Action

如果Action是相关的,那么您将创建一个可以由按钮共享的通用ActionListener。例如,输入数字0、1、2,...可以是共享的ActionListener。有关此方法的有效示例,请查看:How to add a shortcut key for a jbutton in java?

此外,您不应该使用静态变量。相反,您应该创建一个扩展JPanel的类,在其中定义所有变量和Swing组件。还可以在该类中定义ActionListener,以便它们可以根据需要更新标签。