关于java GUI

Swing组件:

JFrame  窗口组件

JLabel  标签

JButton 按钮组件

JTextField 单行文本框

系统控件(JDK自带)

自定义控件(模仿系统控件):

继承  JComenemt;

复写paint();方法

repaint();重新调用方法

接下来是我的作业。

作业一: 设置一个可以不断变化产生随机数的工具,需要有一个按钮暂停或者开始。

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

//产生随机数
@SuppressWarnings("serial")
public class Dome extends JFrame{
  int a = 0,b = 0;
  public Dome(){

    this.setLayout(null);

    JLabel jlabel3 = new JLabel();            //创建一个文本窗口
    jlabel3.setBounds(125,100,50,30);         //固定位置
    this.add(jlabel3);                  //将其填入对话框

    this.setTitle("0~99999随机");           //设置标题
    this.setBounds(0,0,300,300);           //设置对话框大小
    this.setVisible(true);                //对话框可视
    while(true){                    //循环监听按钮
      JButton jbutton = new JButton();
      jbutton.setText("开始/停止");
      jbutton.setBounds(100,150,100,30);
      jbutton.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
          b = b+1;
        }
      });
      this.add(jbutton);
      while(b%2==0){                //循环生成随机数
        a = (int)(Math.random()*99999);
        jlabel3.setText(""+a);
      }
    }
  }
  public static void main(String[] args) {
    new Dome();                    //调用构造器

  }

}

完成后效果图:这个按钮可以操控开始和暂停。

作业二:做一个登录框

import javax.swing.*;

//登录界面
@SuppressWarnings("serial")
public class Dome extends JFrame{
  public Dome(){

    this.setLayout(null);

    //设置首行文字
    JLabel jlabel1 = new JLabel();

    jlabel1.setText("登录界面");
    jlabel1.setBounds(10,0,200,40);
    this.add(jlabel1);

    //显示账号
    JLabel jlabel2 = new JLabel();
    jlabel2.setText("账号:");
    jlabel2.setBounds(60,60,50,20);
    this.add(jlabel2);

    //显示密码
    JLabel jlabel3 = new JLabel();
    jlabel3.setText("密码:");
    jlabel3.setBounds(60,100,50,20);
    this.add(jlabel3);

    //创建输入账号的文本框
    JTextArea jtext1 = new JTextArea();
    jtext1.setText("请输入账号");
    jtext1.setBounds(110,60,200,20);
    this.add(jtext1);

    //创建输入密码的密码框
    JPasswordField jtext2 = new JPasswordField();
    jtext2.setBounds(110,100,200,20);
    this.add(jtext2);

    //设置登录按钮
    JButton jbutton = new JButton();
    jbutton.setText("安全登录");
    jbutton.setBounds(110,160,200,30);
    this.add(jbutton);

    //设置窗口标题以及大小
    this.setTitle("登录界面");
    this.setBounds(0,0,445,340);
    this.setVisible(true);
  }
  public static void main(String[] args) {
    new Dome();
  }
}

完成后效果图:这个登陆框目前没有实现登录功能,不过要实现也很简单,监听按钮,按钮被触发可以读取上面输入的内容,然后再将内容对比你设置的用户名和密码。

如果相同显示登录成功,如果不同提示账号或者密码错误。

作业三 :做个记事本

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

@SuppressWarnings("serial")
public class Dome extends JFrame{
  public Dome(){

    this.setLayout(null);

    JTextArea jtext1 = new JTextArea();
    jtext1.setBounds(0,0,400,400);
    jtext1.setLineWrap(true);
    this.add(jtext1);

    //主菜单栏
    JMenuBar menuBar = new JMenuBar();
    JMenu menu1 = new JMenu("文件");
    JMenu menu2 = new JMenu("编辑");
    JMenu menu3 = new JMenu("格式");
    JMenu menu4 = new JMenu("查看");
    JMenu menu5 = new JMenu("帮助");
    setJMenuBar(menuBar);
    menuBar.add(menu1);
    menuBar.add(menu2);
    menuBar.add(menu3);
    menuBar.add(menu4);
    menuBar.add(menu5);

    //文件二级菜单
    JMenuItem menu11 = new JMenuItem("新建");
    JMenuItem menu12 = new JMenuItem("打开");
    JMenuItem menu13 = new JMenuItem("保存");
    JMenuItem menu14 = new JMenuItem("另存为");
    JMenuItem menu15 = new JMenuItem("退出");
    menu1.add(menu11);
    menu1.add(menu12);
    menu1.add(menu13);
    menu1.add(menu14);
    menu1.addSeparator();
    menu1.addSeparator();
    menu1.add(menu15);

    //编辑二级菜单
    JMenuItem menu21 = new JMenuItem("撤销");
    JMenuItem menu22 = new JMenuItem("剪贴");
    JMenuItem menu23 = new JMenuItem("复制");
    JMenuItem menu24 = new JMenuItem("粘贴");
    JMenuItem menu25 = new JMenuItem("删除");
    JMenuItem menu26 = new JMenuItem("全选");
    menu2.add(menu21);
    menu2.addSeparator();
    menu2.add(menu22);
    menu2.add(menu23);
    menu2.add(menu24);
    menu2.add(menu25);
    menu2.addSeparator();
    menu2.addSeparator();
    menu2.add(menu26);

    //格式 二级菜单
    JMenuItem menu31 = new JMenuItem("自动换行");
    JMenuItem menu32 = new JMenuItem("字体");
    menu3.add(menu31);
    menu3.add(menu32);

    //查看二级菜单
    JMenuItem menu41=new JMenuItem("状态栏");
    menu4.add(menu41);

    //帮助
    JMenuItem menu51 = new JMenuItem("查看帮助");
    JMenuItem menu52 = new JMenuItem("关于记事本");
    menu5.add(menu51);
    menu5.addSeparator();
    menu5.add(menu52);

    this.setTitle("记事本");
    this.setBounds(0,0,400,400);
    this.setVisible(true);
  }

  public static void main(String[] args) {
    new Dome();

  }

}

这个记事本的具体功能还没有要求实现,也就是说目前除了编辑什么都做不了,其实实现也不难,就是将这些按钮都监视一下,点击时触发的事情自己设置就好。

完成后的效果图:

java GUI (课堂笔记)的更多相关文章

  1. MYSQL和JAVA(课堂笔记)

    MYSQL 数据库管理工具 JAVA  编程语言 数据库驱动(JAVA和MYSQL对接方式) 到官网上下载驱动 加载驱动 import java.sql.Connection;import java. ...

  2. Java GUI学习笔记之初识AWT和Swing

    Frame f = new Frame(); //获取显示器的尺寸 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize() ...

  3. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  4. 线程(java课堂笔记)

    1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一. 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同 ...

  5. Java课堂笔记(零):内容索引

    回想自己学习和使用Java的时间也是很长了.本科期间课堂上浅尝辄止地学习了点皮毛,后来也是搁置不用,未曾深入研究.研究生期间因为项目和实习的原因,基本算是重新拾起Java这门语言,并且接触到了Spri ...

  6. Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...

  7. Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...

  8. Java程序设计学习笔记(四)—— GUI

    时间:2016-3-24 11:24 天道酬勤  --GUI(图形用户界面)    1.GUI        Graphical User Interface(图形用户接口).        用图形的 ...

  9. 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记

    前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...

随机推荐

  1. java多线程基本概述(一)——线程的基本认知

    1.1.概念: 进程:进程是操作系统结构的基础,是一次程序的执行:是一个程序及其数据再处理器上顺序执行时所发生的活动:是程序再一个数据集合上运行的过程,它是系统进行系统资源分配和调度的最小单元. 线程 ...

  2. Unity 检测物体是否在相机视野范围内

    需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...

  3. jquery分页插件的修改

    前言 最近分页功能使用的比较多,所以从网上下载个jquery分页插件来使用, 之前用的都挺好的,直到昨天出现了逻辑问题,反复查看自己的代码,最后发现是点击页码后执行了多个点击事件.最后只有自己查看源码 ...

  4. Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器

    首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...

  5. JDBC访问数据库

    一.准备条件 外界条件 在数据库中首先创建表空间 在创建的表中添加数据 代码部分 导入数据库的驱动包(jar) 加载数据库驱动 获取数据库连接 编写sql语句 利用prepareStatement进行 ...

  6. JS模式---发布、订阅模式

    发布订阅模式又叫观察者模式,它定义一种一对多的依赖关系, 当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. document.body.addEventListener('click', ...

  7. Linux安装redis及redis的php扩展。

    ------ redis安装,启动服务,开机启动,打开redis客户端 ------ yum install -y redis systemctl start redis systemctl enab ...

  8. 【代码学习】GD库中简单的验证码

    大体思路: 代码部分: <?php //1.创建画布 $img = imagecreatetruecolor(100,30); //2.设置颜色 值越小,颜色越深 $color1 = image ...

  9. 蓝桥杯-打印大X-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  10. poj1182食物链,经典带权并查集

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种 ...