这是我的代码:
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)
---但无法解析为变量
我真的不知道该怎么做。
答案 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,以便它们可以根据需要更新标签。