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("按钮被点了");
}
}
很有意思,大家也去试试吧!