java如何在构造函数外部添加鼠标侦听器
在下面的示例中,当您按下按钮和按钮2时,按钮和按钮2都会变得不可点击。当您按下重置按钮时,两个禁用的按钮应再次工作
由于我通过移除两个按钮的MouseListener使其不可点击,如何使用check()方法重新添加MouseListener,使它们仍然以相同的方式工作
public static boolean isreset = false;
public static JButton button = new JButton("Disable button 1");
public static JButton button2 = new JButton("Disable button 2");
public static JButton reset = new JButton("Reset all buttons");
Test() {
setTitle("Button Test");
setSize(420, 80);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel buttons = new JPanel(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.BOTH;
gc.gridheight = 1;
gc.gridwidth = 1;
gc.gridx = 0;
gc.gridy = 0;
buttons.add(button, gc);
gc.gridx = 1;
gc.gridy = 0;
buttons.add(button2, gc);
gc.gridx = 3;
gc.gridy = 0;
buttons.add(reset, gc);
add(buttons);
button.addMouseListener(new Mouse(){
public void mousePressed(MouseEvent e){
button.setEnabled(false);
button.removeMouseListener(this);
System.out.println("You pressed button 1.");
isreset = false;
check(isreset);
}
});
button2.addMouseListener(new Mouse(){
public void mousePressed(MouseEvent e){
button2.setEnabled(false);
button2.removeMouseListener(this);
System.out.println("You pressed button 2.");
isreset = false;
check(isreset);
}
});
reset.addMouseListener(new Mouse(){
public void mousePressed(MouseEvent e){
isreset = true;
check(isreset);
}
});
setVisible(true);
}
public static void check (boolean input){
if(input == true){
Test.button.setEnabled(true);
Test.button.addMouseListener(this); //error here
Test.button2.setEnabled(true);
Test.button2.addMouseListener(this); //error here
}
}
# 1 楼答案
代码中的所有内容都是
static
。这不是编写JFrame
子类的方式。我建议您先阅读一些示例代码您不必每次都删除鼠标侦听器。打电话就够了
此外,您应该调用
addActionListener
,而不是addMouseListener
例如: