【发布时间】:2017-03-29 07:18:18
【问题描述】:
我正在尝试制作一个在按下时切换按钮状态(更改颜色和文本)的按钮。但我无法让 addActionListener 工作,也无法从我的主类中找到 ToggleState 方法。我是 Java 新手,非常感谢您的帮助。
我得到了错误 - “AbstractButton 类型中的方法 addActionListener(ActionListener) 不适用于参数” - “ActionListener 无法解析为类型”
package Grafiktest;
import javax.swing.*;
import java.awt.*;
public class coolgrafik extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel panel;
private JLabel label;
public coolgrafik(){
//super(title);
setSize(400,60);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
panel.setBackground(Color.GRAY);
label = new JLabel("test");
panel.add(label);
MyButton button = new MyButton(Color.green, Color.red, "RUN","STOP");
panel.add(button);
button.addActionListener(this);
add(panel);
}
public static void main(String[] args){
new coolgrafik().setVisible(true);
//toggleState(Color.green, Color.red, "RUN","STOP");
}
public void actionPerformed(ActionEvent e) {
toggleState(Color.green, Color.red, "RUN","STOP");
}
}
这是按钮类
package Grafiktest;
import javax.swing.*;
import java.awt.*;
public class MyButton extends JButton{
private static final long serialVersionUID = 1L;
public MyButton(Color c1, Color c2, String s1, String s2){
setText(s1);
setForeground(c1);
setBackground(c1);
setOpaque(true);
}
public void toggleState(Color c1, Color c2, String s1, String s2){
setText(s2);
setForeground(c2);
setBackground(c2);
setOpaque(true);
}
}
【问题讨论】:
-
好吧,你没有导入类 ActionListener,因为它不在
java.awt.*中,而是在java.awt.event.ActionListener中 - 供参考 docs.oracle.com/javase/7/docs/api/java/awt/event/… - 也是 stackoverflow.com/questions/12131195/… -
哈哈,谢谢,那条小线解决了我的 actionlistener 问题。但我仍然无法使用 actionperformer 中的 toggleState 方法。怎么会?
-
MyButton监控自己的模型状态实际上可能会更好
标签: java jframe jbutton actionlistener