窗口基本的实现以及三种监听的使用(超详细)

JFrame是最外面的窗体,JMenuBar是指最上层的菜单,JLabel就是管理文字和图片的容器。首先是JFrame这个窗体,有一个类JFrame可以理解成一个javabean类有一个方法叫做setsize方法,可以设置窗口的宽和高,界面默认是隐藏的,所以还需要调用一个方法是setVisible这里是一个boolean类型的参数,默认是false,所以往里面传参数ture才可以使窗口可见(注意,一般是写在最后的)下一个方法,设置界面居中setLocationRelativeTo()参数传递一个null就可以了,可以让界面居中。设置窗口关闭方法叫做setDefaultCloseOperation(3),其中3表示的是关×可以关闭进程,0是啥也不做,1是默认的关闭窗口操作,可以关闭窗口而不结束程序的运行,如果是2的话,就是如果有多个界面,只有关闭到最后一个的时候才可以结束这个进程。之前提到过如果需要添加菜单的话,需要用到JmenuBar这个类,这个类可以是一整个大长条,其中大长条又有许多的小选项,也就是JMenu,小选项中又有许多的小条目,也就是JmenuItem,最终需要把选项放进大长条中,又要把小条目放进选项中去,是一个比较复杂的逻辑。接下来,去创建按钮JButton,这是一个类,首先要去创建这个类的对象,然后在使用·setBoundsff去设置按钮的位置,长宽高。接着去添加按钮的动作监听。需要调用addActionListener();方法去使用监听,括号里面需要加入一个类,一个实现了ActionListener接口的实现类。我添加的监听是动作监听,可以点击按钮,单击空格来实现监听的内容。当然了,我们需要把按钮添加到窗口中,这里有两种办法,第一种就是创建Pane对象来添加,第二种就是使用隐藏容器来添加,就是jFrame.getContentPane().add来添加。当你使用Pane的方法来调用时,记得不要用setLayout来取消中间布局,不然会乱码。当然,如果使用实现类来进行监听的话,实在是太过于复杂,所以,可以是用匿名内部类的方法进行监听。
ActionListener动作监听有弊端,就是只能识别点击的这个动作,如果想要有更复杂的动作,比如划入,划出等动作,就需要使用MouseListener鼠标监听了。鼠标监听使用方法与动作监听大同小异,最特别的就是鼠标监听有五种方法需要重写。1.mouseClicked“单击”2. mousePressed“按下不松”3. mouseReleased“松开”4.mouseEntered“划入”5.mouseExited““”划出”
五种方法都需要进行重写,所以如果我遇到鼠标监听的时候,一般会直接写一个类去实现。
最后一个就是键盘监听也就是KeyListener,有三个方法需要重写,分别是Typed,Pressed,Released三个方法。我写了两个按钮,分别使用了以上的第一种和第二种监听机制,并且将其放入了窗口当中,而键盘监听一般是加在窗口中的,我也加入了。请看如下代码:

package Jsu;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo {
    public static void main(String[] args) {
         JFrame jFrame=new JFrame("商品管理系统");
         jFrame.setSize(500,500);
        jFrame.setLocationRelativeTo(null);
        jFrame.setDefaultCloseOperation(3);
         JMenuBar jMenuBar=new JMenuBar();
         JMenu jMenu=new JMenu("关于我们");
         JMenuItem jMenuItem1=new JMenuItem("微信号");
         JMenuItem jMenuItem2=new JMenuItem("关闭游戏");
         jFrame.setLayout(null);
        jMenuBar.add(jMenu);
        jMenu.add(jMenuItem1);
        jMenu.add(jMenuItem2);
        JButton jButton1=new JButton("添加商品");
        JButton jButton2=new JButton("删除商品");
        jButton1.setBounds(0,0,500,50);
        jButton2.setBounds(0,50,500,50);
       jButton1.addMouseListener(new Mouse());
        jButton2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("删除商品");
                System.out.println("请在控制台输入您想删除的商品");
            }
        });
        jFrame.addKeyListener(new Key());

      jFrame.setJMenuBar(jMenuBar);
      jFrame.getContentPane().add(jButton1);
      jFrame.getContentPane().add(jButton2);
        jFrame.setVisible(true);

    }
}
package Jsu;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Key implements KeyListener {
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("按下不松");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.out.println("松开");
      int a=  e.getKeyCode();
      if(a==65){
          System.out.println("A被按住了");
      }
    }
}
package Jsu;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Mouse implements MouseListener {
    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("单击");
    }

    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("按住不松开");
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("松开了");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("划入");
    }

    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("划出");
    }
}
package Jsu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class I implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点了");
    }
}

很有意思,大家也去试试吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值