java GUI (课堂笔记)
关于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 (课堂笔记)的更多相关文章
- MYSQL和JAVA(课堂笔记)
MYSQL 数据库管理工具 JAVA 编程语言 数据库驱动(JAVA和MYSQL对接方式) 到官网上下载驱动 加载驱动 import java.sql.Connection;import java. ...
- Java GUI学习笔记之初识AWT和Swing
Frame f = new Frame(); //获取显示器的尺寸 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize() ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- 线程(java课堂笔记)
1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一. 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同 ...
- Java课堂笔记(零):内容索引
回想自己学习和使用Java的时间也是很长了.本科期间课堂上浅尝辄止地学习了点皮毛,后来也是搁置不用,未曾深入研究.研究生期间因为项目和实习的原因,基本算是重新拾起Java这门语言,并且接触到了Spri ...
- Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案
内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
- Java程序设计学习笔记(四)—— GUI
时间:2016-3-24 11:24 天道酬勤 --GUI(图形用户界面) 1.GUI Graphical User Interface(图形用户接口). 用图形的 ...
- 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记
前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...
随机推荐
- 一个简单的jquery左右列表内容切换应用
选中左边某个选项点击添加,即可将选中项添加到右边文本框中,点击选中全部即可将全部选项移到右边,移除按钮功能相同. html代码: <div id="main"> < ...
- Caffe学习系列(四)之--训练自己的模型
前言: 本文章记录了我将自己的数据集处理并训练的流程,帮助一些刚入门的学习者,也记录自己的成长,万事起于忽微,量变引起质变. 正文: 一.流程 1)准备数据集 2)数据转换为lmdb格式 3)计算 ...
- Jquery Validation 验证控件的使用说明
转载自:http://blog.csdn.net/huang100qi/article/details/52453970,做了一些简化及修改 下载地址:https://jqueryvalidation ...
- 《JavaScript权威指南》学习——js闭包
序:闭包这个玩意啊~在很多没有代码块的语言中都会出现,已经成为大多程序员入门的一道坎,闭包让很多程序员觉得晦涩(事实上百度一下这个名词,真的说的很晦涩啊亲==|||),我第一次知道闭包这个名词是从&l ...
- 蓝桥杯-骰子游戏-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 移动前端常用meta标签
移动前端常用meta标签 移动前端head常用meta标签 原文链接:http://caibaojian.com/mobile-meta.html //code from http://caibaoj ...
- 调用startActivityForResult后,onActivityResult为什么立刻响应
现象 今天在编写代码的时候,涉及到两个Activity通过Intent来传值的问题.具体描述为:activity A调用startActivityForResult()函数启动Activit ...
- 分针网—IT教育: Html / CSS常见问题的解决方案
1. 解决Safari下input光标过大 2. 设置浮层 3. CSS绘制三角形 4. 清除浮动 1) 浮动元素父级添加样式 2) 父元素后添加伪元素 3) 同样可以使用 ...
- JavaScript面向对象编程—this详解
this详解 作者的话 在JavaScriptOPPt面向对象编程中,this这位老大哥,相信大家不会陌生.大家在遇到this时,很多朋友难免会有个疑问:"这个this是什么,它到底指向 ...
- R语言结合概率统计的体系分析---数字特征
现在有一个人,如何对这个人怎么识别这个人?那么就对其存在的特征进行提取,比如,提取其身高,其相貌,其年龄,分析这些特征,从而确定了,这个人就是这个人,我们绝不会认错. 同理,对数据进行分析,也是提取出 ...