GUI常用方法和示例

Frame :

Frame : 创建一个框
       1 Frame f = new Frame("这是框的标题");//创建一个框 标题是这是框的标题
       //默认调用paint(Graphics g)方法  需要覆写

2 或者写个类 继承这个Frame类 也行 如 ; 
            public class GUI extends Frame{
                public static void main(String[] args){
                    GUI a = new GUI();//也是创建一个框
                    //因为实例化的时候调用GUI的无参构造而无参构造里面默认第一行有个super(),调用父类的无参构造,就会创建一个Frame框
                }
            }

setLocation :

setLocation() : //设置框的位置 以屏幕左上角(也就是屏幕原点)为标准
        f.setLocation(100,100);//设置框的位置 以屏幕左上角为标准  (x,y)

setSize :

setSize() : //设置框的大小
         f.setSize(200,200);//宽和高 (w,h)

setBackground :

setBackground() : //设置框的背景颜色
       1 f.setBackground(Color.blue);//设置框的背景颜色为蓝色
       2 f.setBackground(new Color(0,0,102));//RGB:Red,Green,Blue->三原色

setResizable :

setResizable() : //设置框的大小是否可以被改变 就是是否可以拉长什么的
        f.setResizable(false);//boolean型 true/false

setVisible : 
    
    setVisible() : //设置框是否可见
        f.setVisible(true);//不写默认是false,一般都要设置 要么你创建框干嘛

setBounds : 
    
    setBounds() : //同时设置位置和宽高 x,y,w,h
        f.setBounds(444,444,222,222);//同时设置位置和宽高

Panel : 
    
    Panel默认布局管理器是 FlowLayout 浮动布局

1 Panel p = new Panel();//创建小控件
   2 Panel p = new Panel(null);//小控件里面可以直接设置布局
   3 Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
        // LEFT 左  向左浮动
        // RIGHT 右 向右浮动
        // CENTER 中 中间浮动
        p.setBounds(50,50,100,100);//设置小部件的x,y,w,h 注意 !这个设置位置 是以框的左上角(原点),为标准 就是f
        p.setBackground(new Color(200,200,255));//设置小控件的背景颜色
        f.add(p);//就把小空间添加到Frame框中了

setLayout :

setLayout() : //设置布局管理器
        有三种布局管理器 : 
            1 FlowLayout(); //Panel默认的
            2 BorderLayout(); //Frame默认的
            3 GridLayout(); //都能用的

FlowLayout :

1 Panel默认的布局管理器  但是指定了也可以用BorderLayout
        Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
        Panel p = new Panl(new BorderLayout(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER));
        // LEFT 左  向左浮动
        // RIGHT 右 向右浮动
        // CENTER 中 中间浮动

BorderLayout :

2 Frame默认的布局管理器 但是指定了也可以用FlowLayout
      1  Frame f = new Frame(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);
      2  FlowLayout fl = new FlowLayout(FlowLayout.CENTER,20,40);//设置布局方式,水平间距,垂直间距
        f.setLayout(fl);
        // 东西向南北缩放 
        // 南北向东西缩放
        // 中向四周缩放
        // EAST 东 
        // WEST 西
        // NORTH 北
        // SOUTH 南
        // CENTER 中
  GridLayout :

3 Frame和Panel都有的布局管理器
        GridLayout();//网格布局管理器
        f.setLayout(new GridLayout(2,2));//两行两列Frame的
        p.set(new GridLayout(2,2));//Panel的

Button :

Button b1 = new Button("按钮");//创建按钮  后面括号是按钮的名字
    把按钮添加到Frame中,并通过常量(public static final XXX(必须大写))指定他们的位置  有两种 :
        1 f.add(b1, BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);//东(右),西(左),北(上),南(下),中
        2 f.add(b1,"East/West/North/South/Center");//东(右),西(左),北(上),南(下),中

pack :

pack() : //是否打包,把frame里面所有的元素打包,然后根据包裹的大小,把frame撑开,f.setSize(),就失效了
        f.pack();//frame框用里面的元素撑开

ActionListener : 
    
    //创建监听器  : 
            1 监听器类必须实现ActionListener接口
            2 必须实现ActionListener接口中的actionPerformed(ActionEvent e)方法

addActionListener :

//绑定监听器 : 
            addActionListener();//给指定的按钮什么的绑定监听器  触发监听器 会默认调用actionPerformed(ActionEvent e)这个方法
            b.addActionListener(m);//给b按钮绑定监听器  m在后面例子中,

setActionCommand :

setActionCommand() : //给监听器绑定说明
        b.setActionCommand("我是第一个按钮");

如 :  //简单的属性设置 好多属性没设置
class Monitor implements ActionListener{//自己创建一个监听器类 实现ActionListener接口
    //实现ActionListener接口中的actionPerformed(ActionEvent e)方法
    public void actionPerformed(ActionEvent e){
        System.out.println( "我这个button按了一下" );
        System.out.println( e.getActionCommand() );//获取给监听器添加的说明
    }
}
public class GUI{
    public static void main(String[] args){
        Frame f = new Frame("名字");//创建框
        Button b = new Button("按钮");//创建按钮
        Monitor m = new Monitor();//实例化监听器类
        b.addActionListener(m);//绑定监听器 并把对象传进去
        f.add(b);//把按钮添加到框中
        f.setVisible(true);//框可见
    }
}

TextField :

TextField() : 绑定的监听器,由回车触发

TextField t = new TextField();//创建一个文本框
    TextField t = new TextField(10);//创建一个文本框并且最多只能输入10个
    f.add(t);//把文本框添加到Frame框中
    t.addActionListener(new TFActionListener());//绑定监听器  由回车触发
    t.setEchoChar(‘*‘);//密码机制 把输入的文字用*遮蔽
    f.pack();//包裹 有内容撑起Frame框
    setVisible(true);//设置可见

class TFActionListener implements ActionListener{//创建监听器
    //接收事件对象,////一个类去访问另外一个类里面的的方法里面的局部变量,不可能
    public void actionPerformed(ActionEvent e){
        //获得事件对象的源对象:在一个类里面想访问另一个类里面的事件源对象,getSource()
        TextField tf = (TextField)e.getSource();
        //把事件源传递过来,然后向下转型
        //强制类型转换成TextField对象然后toString()输出
        System.out.println( tf.getText() );//输出文本框的内容
        //然后把内容设为空
        tf.setText("");
    }
}

getSource : 
        
    getSource() : 获得事件源的对象
        TextField tf = (TextField)e.getSource();//如上面的代码,获得事件源的对象,然后向下转型,就能访问特有的属性

getText : 
    
    t.getText();//获得文本框的内容

setText :

t.setText("");//给文本框重新赋值  就一个"" 就是设置为空

setEchoChar :

t.setEchoChar(‘*‘);//把文本框输入的字用*号代替(只是遮蔽,输出是什么,还是什么,*只是不让直接看到)

Label :

Label l = new Label("注意:");//创建一个标注 
    f.add(l);//添加到Frame框中

paint : 
    
    paint(Graphics g);//创建Frame框的时候,会默认调用这个方法
    //Graphics:就看做是画笔,把Frame看做是画布
  getColor : 
        Color c = g.setColor();//获得画笔原来的颜色
  setColor :
        g.setColor(Color.red);//设置画笔的颜色
        g.setColor(c);//就是洗画笔,把画笔改为原来的颜色
  fillOval :
        g.fillOval(50,55,55,55);//画一个实心椭圆(内切椭圆),位置,宽高
  fillRect : 
        g.fillRect(44,44,44,44);//画一个实心的矩形,位置,宽高
  drawOval : 
        g.drawOval(22,22,22,22);//画一个空心椭圆(内切椭圆),位置,宽高
  drawRect :
        g.drawRect(22,22,22,22);//画一个空心矩形,位置,宽高

MouseAdapter :

f.addMouseListener(new 监听类);//绑定鼠标监听  触发监听,默认调用mousePressed(MouseEvent e)这个方法
    绑定鼠标监听 :
        1 创建监听器类 必须继承MouseAdapter这个抽象类
        2 必须实现(其中一个方法,这里实现的是)mousePressed(MouseEvent e)这个方法
    class Monitor extends MouseAdapter{
    //MouseListener-->MouseAdapter-->Monitor():如果直接实现接口,需要全部实现接口的方法,但还是MouseAdapter对接口的所有方法都进行了空的实现,我们只写去覆写我们需要的方法即可
    //MounseEvent,事件发生的时候,事件源会把时间的相关对象通过监听器发给我们的处理类
    //监视器在对鼠标按下这个事件作出反应
    public void mousePressed(MouseEvent e){

//拿到事件源对象,谁是事件源,Component,Frame就是事件源,本质是拿到时间源对象的引用
        MyFrame f = (MyFrame)e.getSource();//拿到事件源的引用
        f.addPoint(new Point(e.getX(), e.getY()));//Point是个类 getX(),getY()鼠标的坐标,以这个坐标为原点,花一个点,然后把点添加到Frame框架中
        
        //再去重画这个Frame及其里面的一切元素
        //画布重画机制:前画布需要状态改变才行,大小,显示与否,等等
        //repaint-->update-->paint();强制刷新屏幕,整个重新绘制
        //这里通过repaint调用paint()方法,遍历集合,把每个点都进行强制重画,点一次,就从内存中发送到屏幕中,数据强制刷新一次
        f.repaint();
    }
}

WindowAdapter :

//创建窗口监听器
    f.addWindowListener(new 监听类);//给Frame框绑定窗口监听(就能关闭了)
    创建窗口监听 : 
        1 创建监听类必须继承WindowAdapter这个抽象类
        2 必须实现(其中一个方法,这里实现的是)WindowClosing(WindowEvent)方法
        f.addWindowListener(new MyWinMonitor());//绑定窗口监听
        class MyWinMonitor extends WindowAdapter{//创建窗口监听类
        public void windowClosing(WindowEvent e){//覆写方法
            setVisible(false);//
            System.exit(0);//关闭jvm
        }

//匿名内部类写法 : 
    this.addWindowListener(
                new WindowAdapter(){
                    public void windowClosing(WindowEvent e){
                        setVisible(true);
                        System.exit(0);//关闭jvm
                    }
                }
            );
    
KeyAdapter : 
        
    //创建键盘监听 : 
        1 创建键盘监听类 必须继承KeyAdapter抽象类
        2 必须实现keyPressed(KeyEvent e)方法

f.addKeyListener(new 监听类);//给frame框绑定键盘监听
    class KeyMonitor extends KeyAdapter{
    public void keyPressed(KeyEvent e){
        int keyCode = e.getKeyCode();//  getKeyCode 
        if (keyCode == KeyEvent.VK_UP) {//常量VK_UP这里我只设置了UP键吧,
            System.out.println( "up--------" );
        }
    }
}
    getKeyCode : 
        getKeyCode();//获得按键的对应的整型值
    KeyEvent :
        KeyEvent是个类.里面的常量VK_UP 都有对应的整型int值

时间: 2024-10-13 10:38:40

GUI常用方法和示例的相关文章

python GUI编程tkinter示例之目录树遍历工具

摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用新目录中的文件列表代替旧文件列表.这里新增了列表框.文本框和滚动条,此外还增加了鼠标单击.键盘按下.滚动操作等回调函数.其实,整个应用就是一系列控件和函数的组合. #python 3.6 import os from time import sleep from tkinter import * #

uc/GUI在SylixOS下的应用

1 工作准备 1.1 环境准备 在使用之前,须安装有SylixOS的集成开发套件,由于系统上安装的防火墙软件或者杀毒软件,可能会影响到集成开发软件的使用,因此,在使用本套件前请关闭计算机上的windows 防火墙以及杀毒软件. 因后续操作需要在模拟器上进行展示(本文档以mini2440模拟器进行模拟展示),所以在进行后续章节操作前,请完成 mini2440模拟器的配置并启动. 注意:本文档提供库只支持ARM体系结构,其他体系架构暂不支持. 1.2 资源准备 请通过网上搜索或其他方式获取类GUI库

IbatisNet开发使用小结

一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM框架,使用起来较为方便.灵活.IBatis.Net是从Ibatis的Java版本移植过来的.NET版本.iBATIS作为一种独特的Data Mapper,使用SQL映射的方式将对象持久化至关系型数据库.简单的理解就是它将我们在数据访问层实现的C#逻辑代码,变为通过关系数据库与对象的映射,将SQL逻辑

Java Script 基本知识点

                      JavaScript是一种基于对象和事件驱动的脚本语言,它提供了一些专有的类.对象及函数 1.基本数据类型 JavaScript提供了4种基本的数据类型用来处理数字和文字 Number.String.Null.Boolean 1).变量 语法: var 变量名=值; 变量命名规范: 1)变量名由字母.数字.下划线和$组成 2)变量名的首字母必须是字母.$或下划线 3)不能使用JavaScript 保留字,注意区分大小写 2).类型转换 parseInt

计算机程序的思维逻辑 (25) - 异常 (下)

上节我们介绍了异常的基本概念和异常类,本节我们进一步介绍对异常的处理,我们先来看Java语言对异常处理的支持,然后探讨在实际中到底应该如何处理异常. 异常处理 catch匹配 上节简单介绍了使用try/catch捕获异常,其中catch只有一条,其实,catch还可以有多条,每条对应一个异常类型,比如说: try{ //可能触发异常的代码 }catch(NumberFormatException e){ System.out.println("not valid number"); }

easy touch利用playmaker拖动ngui对象

最近在学习unity3d的几个插件.easy touch,playmaker,ngui.为了使几个能够一起使用,还弄了playmaker ngui scripts和easy touch addon 4 playmaker插件. 最近做的一个需要touch拖动一个ngui的2d对象,又想用playmaker来控制.这话怎么说怎么绕啊.反正,是有杀鸡用宰牛刀的感觉. 在easy touch addon 4 playmaker的例子里面有怎么拖动gui对象的示例,不过我在拖动ngui的时候发现总是不对

Java基础系列9:BigInteger类和BigDecimal类

一 BigInteger类 当我们碰到需要处理一个很大的数字时,这时候肯定没法使用int和long.当然我们可以使用String来接收大数字,然后再采用拆分的方式来计算,不过这种方式很麻烦.因此在Java中为了解决这种问题,提供了BigInteger类.BigInteger类表示是大整数类,定义在java.math.*这个包中,如果操作的整数已经超过了整数的最大类型长度long,这时可以考虑使用BigInteger类来进行操作 常用方法的示例: package javase.base; impo

java并发编程框架 Executor ExecutorService invokeall

首先介绍两个重要的接口,Executor和ExecutorService,定义如下: Java代码   public interface Executor { void execute(Runnable command); } Java代码   public interface ExecutorService extends Executor { //不再接受新任务,待所有任务执行完毕后关闭ExecutorService void shutdown(); //不再接受新任务,直接关闭Execut

IBatisNet基础组件

DomSqlMapBuilder DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例.可以通过这个组件从Stream, Uri, FileInfo, or XmlDocument instance 来读取sqlMap.config文件. SqlMap   SqlMap是IBatisnet的核心组件,提供数据库操作的基础平台.SqlMap可通过DomSqlMapBuilder创建.          Assembly assembly = Assembly.Load("IB