日期:2014-05-20  浏览次数:20635 次

actionListener使用和Cursor类的使用
import java.awt.*;
import java.awt.event.*;
class WindTen extends Frame implements ActionListener
{ Panel p;
  ScrollPane scrollpane;
  Button button;
  WindTen()
  { setLayout(new FlowLayout());
p=new Panel();
  button=new Button("one");
scrollpane=new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); 
button.addActionListener(this);
p.add(button);
new Button("two").addActionListener(this);
p.add(new Button("two"));
p.add(new Button("three"));  
p.add(new Button("four"));
scrollpane.add(p);
add(scrollpane);
setBounds(100,100,200,150);
  setVisible(true);
  validate();
  addWindowListener(new WindowAdapter(){
  public void windowClosing(WindowEvent e){
  System.exit(0);
  }
  });
  }
  
  
  public void actionPerformed(ActionEvent e)
  { System.exit(0);
 
  }
}
public class ScrollPaneExa {

/**
* @param args
*/
public static void main(String[] args) {
new WindTen();
// TODO Auto-generated method stub

}

}


上面的程序是把一个panel面板加到滚动面板中,在把四个按钮加到Panel里
  p=new Panel();
  button=new Button("one");
  button.addActionListener(this);
p.add(button);
new Button("two").addActionListener(this);
p.add(new Button("two"));
  为什么button加监听器能退出而 new Button("two")就不能退出??






还有一个问题是关于Cursor类实例化之后,在容器中使用setCursor()方法,最后没有把Cursor对象放到容器中容器也能显示光标形状,而Button之类对象加到容器中才能显示??

------解决方案--------------------
首先LZ要明白new的意义,new就是生成一个新的对象
new Button("two").addActionListener(this); //这里是一个new的对象添加了监听器
p.add(new Button("two")); //这里又是另一个new的对象,这个和上面那个是完全不同的两个对象

举个例子
Button a = new Button("a");
Button b = new Button("a");
LZ觉得a和b是同一个对象吗?很明显不是,所以你的代码里相当于a添加了监听器,但panel里添加的是b按钮
所以,b按钮没有添加监听器,所以不会有任何处理