- Java code
import java.awt.*;import java.awt.event.*;public class Cen{ private static Button b; private static Button c; public static void main(String args[]) { Frame f=new Frame("Test"); b=new Button("B"); b.addActionListener(new ButtonHandler()); //好象这里报错..... c=new Button("C"); c.addActionListener(new ButtonHandler()); f.setLayout(new FlowLayout()); f.add(b); f.add(c); f.setSize(200,100); f.setVisible(true); } class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("all"); //这个地方输出有问题 if(e.getSource().equals(b)) System.out.println("b"); if(e.getSource().equals(c)) System.out.println("c"); } }}
------解决方案--------------------
写个匿名内部类试试·
------解决方案--------------------
b.addActionListener(new Cen().new ButtonHandler()); //好象这里报错.....
c=new Button("C");
c.addActionListener(new Cen().new ButtonHandler());
你这个是内部类的问题。
像我上面那个样就没问题了
------解决方案--------------------
b.addActionListener(cen.new ButtonHandler()); //好象这里报错.....
c=new Button("C");
c.addActionListener(cen.new ButtonHandler());
内部类的问题
------解决方案--------------------
程序耦合太多了,设计不是很合理。
这样给你改了一下,避免了各种各样的数据交叉问题。
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test {
public static void main(String args[]) {
new MyFrame("test");
}
}
class MyFrame extends Frame {
public MyFrame(String title) {
super(title);
b = new Button("B");
b.addActionListener(new ButtonHandler()); //好象这里报错.....
c = new Button("C");
c.addActionListener(new ButtonHandler());
setLayout(new FlowLayout());
add(b);
add(c);
setSize(200, 100);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private Button b, c;
class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("all"); //这个地方输出有问题
if (e.getSource().equals(b)) {
System.out.println("b");
}
if (e.getSource().equals(c)) {
System.out.println("c");
}
}
}
}
------解决方案--------------------
上面的代码中增加了窗口关闭事件,使程序可以正常关闭。
------解决方案--------------------
------解决方案--------------------
swt 漂过
------解决方案--------------------
up