黑马程序员技术交流社区

标题: GUI图形界面问题 [打印本页]

作者: 颜仔    时间: 2014-11-13 15:47
标题: GUI图形界面问题

  1.                 but.addActionListener(new ActionListener()
  2.                 {
  3.                         public void actionPerformed(ActionEvent e)
  4.                         {
  5.                                 System.out.println("action ok");
  6.                                 //System.exit(0);
  7.                         }
  8.                 });
  9.                 but.addMouseListener(new MouseAdapter()
  10.                 {
  11.                         private int count=1;
  12.                         private int clickCount=1;
  13.                         public void mouseEntered(MouseEvent e)
  14.                         {
  15.                                 System.out.println("鼠标进入到该组件"+count++);
  16.                         }
  17.                         public void mouseClicked(MouseEvent e)
  18.                         {
  19.                                 System.out.println("点击动作"+clickCount++);
  20.                         }
  21.                 });
复制代码

请问 我用鼠标监听和活动监听都监听了按钮后,为什么按键盘的时候,活动监听不执行,看毕老师视频不是按住键盘的时候会执行吗?按钮不是键盘和鼠标都可以控制吗?
作者: 15621506590    时间: 2014-11-16 19:14
键盘的话是按键事件问题:可以通过KeyListener接口来处理按键事件。
作者: 颜仔    时间: 2014-11-16 20:17
15621506590 发表于 2014-11-16 19:14
键盘的话是按键事件问题:可以通过KeyListener接口来处理按键事件。

我知道啊  但是按钮监听了活动监听后不是键盘也可以操作吗?为什么我的没有反应呢?
作者: wangshuying    时间: 2014-11-17 08:51
  public void mouseEntered(MouseEvent e),是你的鼠标在按钮上划来划去,当你的鼠标划进或划出按钮的时候, 这句话执行了。
public void mouseClicked(MouseEvent e)是当你的鼠标左键在按钮上点击时,这句话会执行
but.addActionListener(new ActionListener(),当你按键盘上的键时,会执行
特别注意:你看看你的frame用的什么布局,如果是默认的话,but会占满整个frame,划进的意思是这个按钮的边界,而不是你给button你的那个名字而已


作者: 颜仔    时间: 2014-11-17 16:46
wangshuying 发表于 2014-11-17 08:51
public void mouseEntered(MouseEvent e),是你的鼠标在按钮上划来划去,当你的鼠标划进或划出按钮的时候 ...

我是new出来的流式布局。but.addActionListener(new ActionListener(),当你按键盘上的键时,会执行,你的这句话就是当按钮为当前事件源的时候 键盘进行操作没有任何反应。
作者: qq8921310    时间: 2014-11-17 16:49
你查查keyListener的API
作者: chensc    时间: 2014-11-17 19:44
学习学习!
作者: wangshuying    时间: 2014-11-18 07:48
public class GUIDemo {
        public static void main(String[] args){
                Frame f=new Frame("my.awt");               
                f.setBounds(200,200, 400, 300);
                f.setLayout(new FlowLayout());
            Button but=new Button("my button");
            f.add(but);
            but.addActionListener(new ActionListener()
        {
                public void actionPerformed(ActionEvent e)
                {
                        System.out.println("action ok");
                        //System.exit(0);
                }
        });
        but.addMouseListener(new MouseAdapter()
        {
                private int count=1;
                private int clickCount=1;
                public void mouseEntered(MouseEvent e)
                {   
                        System.out.println("鼠标进入到该组件"+count++);
                }
                public void mouseClicked(MouseEvent e)
                {
                        System.out.println("点击动作"+clickCount++);
                }
        });
            
            f.setVisible(true);
        }
}
我把你的代码复制了一遍,你看看一样吗,  当执行but.addActionListener(new ActionListener()时,你点击鼠标左键或者按键盘上的键时都会输出action ok
作者: 颜仔    时间: 2014-11-19 17:38
wangshuying 发表于 2014-11-18 07:48
public class GUIDemo {
        public static void main(String[] args){
                Frame f=new Frame("my.awt");               

正确者  我查了文档了  好像要按空格键才会触发活动监听来显示。
作者: 颜仔    时间: 2014-11-19 17:41
qq8921310 发表于 2014-11-17 16:49
你查查keyListener的API

解决了。查的文档 操作空格






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2