黑马程序员_GUI基础知识点

本文深入探讨了Java中GUI编程的基础概念,包括AWT与Swing的区别,如何构建界面、处理键盘与鼠标事件,以及GUI菜单系统的实现。通过实例代码展示每个步骤的应用,帮助开发者掌握Java GUI编程的精髓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- android培训java培训、期待与您交流! ----------------------

 

在java最先提供这些部件的工具包是AWT(抽象窗口化工具包),但是由于用它编写的GUI程序的可移植性差,不能满足多个不同的系统用户。所以java后来新出了一个swing包,在AWT的基础上改进提高了性能。

GUI的构建工具,可分为“部件”(或者叫组件)和“容器”两种。

部件:按钮,滚动条,文本输入框等东西

容器:窗口,对话框等。

其实创建个界面,就是把这些部件放入到容器中去。

当然有些容器也是可以放入容器中的,但是部件中是不能放容器的,部件也不能放入部件中。

一般我们在开发一个GUI程序,通常是4个步骤:

1.构建一个顶层的窗口。

2.构建部件

3.用容器的add方法把部件放入容器。

4.设置布局。

import java.awt.*;

public class Test(){

        public Test(){

                this.setTile("你好");    //标题名称

                this.setSize(200,300);   //窗口大小

                this.setVisible(true);   //显示窗口

                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口。

        }

}


 

我们一般设置使用图形化界面时,都是通过利用鼠标和键盘来完成的。
键盘事件:
(1)KeyListener包含
KeyPressed(按下一瞬间的事件,表示虚拟键码即捕捉按键),能够调用e.getKeyCode()返回虚拟键码,e.isShiftDown()等检测是否按下shift。
KeyTyped(一直按着时的事件,表示在屏幕上出现的真实字符,如果按shift+a,则会为A),e.getKeyChar()返回真实字符
KeyReleased(放开一瞬间的事件)
(2)panel默认是不接受键盘事件的,需要在panel构造函数最后加setFocusable(true);激活
10.鼠标事件:
(1)鼠标事件有3个监听器
MouseListener:有MousePressed(按下鼠标瞬间的事件),MouseReleased(松开鼠标瞬间的事件),MouseClicked(主要是调用e.getClickCount()获得鼠标点击次数)
MouseMotionListener:MouseMoved(鼠标平常移动),MouseDragged(鼠标按下后移动)
MouseWheelListener:MouseWheelMoved(鼠标滚轮移动)
(2)MouseEvent可以调用e.getX(),e.getY()返回鼠标的位置

GUI的菜单问题

import  java.awt.*;  
import  javax.swing.*;  
 
public  class  Frame1  
       extends  JFrame  {  
           private  List  list1  =  new  List();  
           private  JLabel  jLabel1  =  new  JLabel();  
           MenuBar  menuBar1  =  new  MenuBar();  
           Menu  menu1  =  new  Menu();  
           Menu  menu2  =  new  Menu();  
           Menu  menu3  =  new  Menu();  
           MenuItem  menuItem1  =  new  MenuItem();  
           MenuItem  menuItem3  =  new  MenuItem();  
           MenuItem  menuItem4  =  new  MenuItem();  
           Menu  menu4  =  new  Menu();  
           MenuItem  menuItem6  =  new  MenuItem();  
           Menu  menu5  =  new  Menu();  
           MenuItem  menuItem2  =  new  MenuItem();  
           public  Frame1()  {  
                       try  {  
                                   jbInit();  
                       }  
                       catch  (Exception  e)  {  
                                   e.printStackTrace();  
                       }  
           }  
 
           private  void  jbInit()  throws  Exception  {  
                       this.getContentPane().setLayout(null);  
                       list1.setBounds(new  Rectangle(35,  68,  465,  153));  
                       jLabel1.setText("这个字就是frame1.java");  
                       jLabel1.setBounds(new  Rectangle(34,  39,  242,  24));  
                       this.menu1.setLabel("1");  
                       menu2.setLabel("2");  
                       menu3.setLabel("3");  
                       menuItem1.setLabel("3.1");  
                       menuItem3.setLabel("2.1");  
                       menuItem4.setLabel("3.2");  
                       menu4.setLabel("help");  
                       menuItem6.setLabel("about");  
                       menu5.setLabel("2.2");  
                       menuItem2.setLabel("2.4");  
                       this.getContentPane().add(jLabel1,  null);  
                       this.getContentPane().add(list1,  null);  
                       menuBar1.add(menu1);  
                       menuBar1.add(menu2);  
                       menuBar1.add(menu3);  
                       menuBar1.add(menu4);  
                       menu3.add(menuItem1);  
                       menu3.add(menuItem4);  
                       menu2.addSeparator();  
                       menu2.add(menuItem3);  
                       menu2.addSeparator();  
                       menu2.add(menu5);  
                       menu2.addSeparator();  
                       menu4.add(menuItem6);  
                       menu5.add(menuItem2);  
           }  
 
           public  void  output(String  str)  {  
                       list1.add(str);  
           }  
 
}  


---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.youkuaiyun.com/heima
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值