java 实验5 图形用户界面设计试验
常用布局
1)、流布局:
FlowLayout 从左到右,自上而下方式在容器中排列,控件的大小不会随容器大小变化.
容器.setLayout(new FlowLayout(FlowLayout.LEFT));
2)、网格布局:
GridLayout 按照指定行数与列数,将容器分成大小相等的单元格每个单元格放置一个控件. 不能将控件放在指定单元格
容器.setLayout(new GridLayout(3,4,10,15));
3)、边界布局:
BorderLayout 将容器分成东、西、南、北、中五个部分
容器.setLayout(new BorderLayout());
窗口的内容面板默认布局就是边界布局。
容器.add(控件,BorderLayout.NORTH);
4)、混合布局:
使用JPanel,将多个布局组合在一起使用
5)、绝对布局 null:
以坐标定位
容器.setLayout(null);
每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height);
btn.setBounds(10,100,30,60);
常用事件
1)、事件源 EventSource:能够触发事件控件 如:JButton,JTextField,JFrame,JComboBox,....
2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...
3)、事件侦听者Listener(接口) ActionListener,WindowListener,...
class A implements ActionListener{
public void actionPerformed(ActionEvent e){
....
}
}
A lis=new A();
4)、事件处理函数
public void actionPerformed(ActionEvent e){
....
}
事件流程:事件源触发事件-->事件源侦听者接收事件-->自动调用相应事件处理函数.
实践编程
1.在应用程序窗体中安排1个文本框,一个标签。在文本框输入一个数字(0-9),按回车键,在标签处显示对应的英文单词。 0---zero,1---one,....
窗体类:
package 简单数字对应窗体;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Numcompare extends JFrame{
JTextField text;
JLabel label;
Numcompare(){
setTitle("Number change");
//限制输入一个数字
text=new JTextField(10);
label=new JLabel();
label.setText("请输入0-9的数字");
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String getstr=text.getText();
String showstr=null;
switch (getstr) {
case "0":
showstr="zero";
break;
case "1":
showstr="one";
break;
case "2":
showstr="two";
break;
case "3":
showstr="three";
break;
case "4":
showstr="four";
break;
case "5":
showstr="five";
break;
case "6":
showstr="six";
break;
case "7":
showstr="seven";
break;
case "8":
showstr="eight";
break;
case "9":
showstr="nine";
break;
default:
showstr=("请输入0-9的数字");
break;
}
label.setText(showstr);
text.setText(null);
}
});
setLayout(new FlowLayout());
add(text);
add(label);
setBounds(100,100,460,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);;
}
}
实现类(注:以下省略实现类--实例化自定义窗体)
package 简单数字对应窗体;
public class test {
public static void main(String[] args) {
new Numcompare();
}
}
结果:
2.在应用程序窗体中安排两个文本框分别用来输入两个整数,两个按钮分别为 “+”,“*”,一个结果标签。点击按纽“+”将两文本框的数据做加法运算;点击按钮“*”做乘法运算,将结果显示在标签中。
窗体类:
package 简单计算窗体;
import java.awt.event.*;
import java.math.BigInteger;
import java.awt.*;
import javax.swing.*;
public class Caculate extends JFrame{
JTextArea text1,text2;
JButton jb1,jb2;
JLabel label;
Caculate(){
text1=new JTextArea(2,4);
text2=new JTextArea(2,4);
jb1=new JButton("+");
jb2=new JButton("*");
label=new JLabel();
JSplitPane p1;
JPanel p2=new JPanel();
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String n1=text1.getText();
String n2=text2.getText();
try {
BigInteger num1=new BigInteger(n1);
BigInteger num2=new BigInteger(n2);
label.setText((num1.add(num2)).toString());
}catch (Exception ee) {
label.setText("请输入整数");
text1.setText(null);
text2.setText(null);
}
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String n1=text1.getText();
String n2=text2.getText();
try {
BigInteger num1=new BigInteger(n1);
BigInteger num2=new BigInteger(n2);
label.setText((num1.multiply(num2)).toString());
}catch (Exception ee) {
label.setText("请输入整数");
text1.setText(null);
text2.setText(null);
}
}
});
setLayout(new GridLayout(3,1));
p1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,text1,text2);
p1.setDividerLocation(117);
add(p1);
p2.setLayout(new GridLayout(1,2));
p2.add(jb1);
p2.add(jb2);
add(p2);
add(label);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
} }
结果:
3.设计合理的布局生成下图所示的图形界面,并编写事件处理程序实现以下功能:按“产生”按钮,产生两个随机数并分别显示在“数字一”和“数字二”对应的文本框内,按“计算”按钮,计算产生的这两个随机数之和,并显示在“结果”对应的文本框内。
窗体类
package 随机数和; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import javax.swing.*;
public class RandomAdd extends JFrame{
JLabel label1=new JLabel("数字一");
JLabel label2=new JLabel("数字二");
JLabel label3=new JLabel("结果");
JButton jb1=new JButton("产生");
JButton jb2=new JButton("计算");
RandomAdd(){
setTitle("随机生成数 相加计算");
JTextArea ja1=new JTextArea(2,4);
JTextArea ja2=new JTextArea(2,4);
JTextArea ja3=new JTextArea(2,4);
Box basebox,box1,box2;
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ja1.setText(Math.random()*100+"");
ja2.setText(Math.random()*100+"");
ja3.setText(null);
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
BigDecimal num1 = new BigDecimal(ja1.getText());
BigDecimal num2 = new BigDecimal(ja2.getText());
ja3.setText(num1.add(num2).toString());
}catch (Exception ee) {
ja3.setText("请点击产生键");
}
}
}); box1=Box.createVerticalBox();
box1.add(label1);
box1.add(Box.createHorizontalStrut(8));
box1.add(label2);
box1.add(Box.createHorizontalStrut(8));
box1.add(label3);
box1.add(Box.createHorizontalStrut(8));
box2=Box.createVerticalBox();
box2.add(ja1);
box2.add(Box.createHorizontalStrut(8));
box2.add(ja2);
box2.add(Box.createHorizontalStrut(8));
box2.add(ja3);
box2.add(Box.createHorizontalStrut(8));
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(Box.createHorizontalStrut(80));
basebox.add(box2); setLayout(new GridLayout(2,1));
JPanel jp=new JPanel();
add(basebox);
jp.add(jb1);
jp.add(jb2);
add(jp);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
结果
4、编写程序实现如下界面,实现事件如果按下座位i 就在控制台中显示“座位i被选中” 例如按下 “座位0“,则输出座位0被选中”。
窗体类
package 选座位;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*; import javax.swing.*;
public class ChooseChair extends JFrame implements ActionListener{
ChooseChair(){
JButton jb0=new JButton("座位0");
JButton jb1=new JButton("座位1");
JButton jb2=new JButton("座位2");
JButton jb3=new JButton("座位3");
JButton jb4=new JButton("座位4");
JButton jb5=new JButton("座位5");
jb0.addActionListener(this);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb5.addActionListener(this);
JLabel label=new JLabel("讲台",JLabel.CENTER);
JPanel jp=new JPanel();
jp.setLayout(new GridLayout(2,3));
jp.add(jb0);
jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
jp.add(jb4);
jp.add(jb5);
add(jp,BorderLayout.CENTER);
add(label,BorderLayout.NORTH);
setBounds(100,100,260,190);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()+"被选中");
}
}
结果:
5、完成以下窗体制作
窗体类
package 图书馆办证; import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField; public class LibraryRegister extends JFrame{
LibraryRegister(){
setTitle("图书馆办理");
JLabel label0=new JLabel("图书证注册");
JLabel label1=new JLabel("姓名:");
JLabel label2=new JLabel("性别:");
JLabel label3=new JLabel("身份:");
JLabel label4=new JLabel("单位:");
JLabel label5=new JLabel("证件号码:");
JLabel label6=new JLabel("注册日期:");
JLabel label7=new JLabel("有效日期:");
JTextField ja1=new JTextField();
JTextArea ja2=new JTextArea(1,1);
JTextArea ja3=new JTextArea(1,1);
JTextArea ja4=new JTextArea(1,1);
JComboBox jm1=new JComboBox();
JComboBox jm2=new JComboBox();
JComboBox jm3=new JComboBox(); jm1.addItem("男");
jm1.addItem("女");
jm2.addItem("学生");
jm2.addItem("老师");
jm3.addItem("计算机系");
jm3.addItem("英语系");
jm3.addItem("国交系");
JPanel jp1=new JPanel();
JPanel jp2=new JPanel(); JButton jb1=new JButton("添加");
JButton jb2=new JButton("删除");
JButton jb3=new JButton("撤销");
JButton jb4=new JButton("退出");
Box basebox,box1,box2; //上部
jp1.add(label0); //中部
box1=Box.createVerticalBox();
box1.add(label1);
box1.add(Box.createVerticalStrut(15));
box1.add(label2);
box1.add(Box.createVerticalStrut(15));
box1.add(label3);
box1.add(Box.createVerticalStrut(15));
box1.add(label4);
box1.add(Box.createVerticalStrut(15));
box1.add(label5);
box1.add(Box.createVerticalStrut(15));
box1.add(label6);
box1.add(Box.createVerticalStrut(15));
box1.add(label7);
box2=Box.createVerticalBox();
box2.add(ja1);
box2.add(Box.createVerticalStrut(8));
box2.add(jm1);
box2.add(Box.createVerticalStrut(8));
box2.add(jm2);
box2.add(Box.createVerticalStrut(8));
box2.add(jm3);
box2.add(Box.createVerticalStrut(8));
box2.add(ja2);
box2.add(Box.createVerticalStrut(8));
box2.add(ja3);
box2.add(Box.createVerticalStrut(8));
box2.add(ja4);
basebox=Box.createHorizontalBox();
basebox.add(box1);
basebox.add(Box.createHorizontalStrut(200));
basebox.add(box2); //底部按钮 懒得实现
jp2.add(jb1);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4); setLayout(new BorderLayout());
add(jp1,BorderLayout.NORTH); add(basebox);
add(jp2,BorderLayout.SOUTH);
setBounds(100,100,500,325);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
结果
6、运用Swing控件完成下题
package 借用物品; import java.awt.Dimension;
import java.awt.GridLayout; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField; public class BorrowItem extends JFrame{
BorrowItem(){
setTitle("借用物品");
JLabel label1=new JLabel("员工编号:");
JLabel label2=new JLabel("借用器具:");
JLabel label3=new JLabel("借用日期:");
JLabel label4=new JLabel("归还日期:");
JLabel label5=new JLabel("借用原因:");
JTextField text1=new JTextField(9);
JTextField text2=new JTextField(9);
JTextField text3=new JTextField(9);
JTextField text4=new JTextField(9);
JTextField text5=new JTextField(25);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
Dimension preferredSize = new Dimension(160,30);//设置尺寸
jb1.setPreferredSize(preferredSize );
jb2.setPreferredSize(preferredSize ); setLayout(new GridLayout(4,1));
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
jp1.add(label1);
jp1.add(text1);
jp1.add(label2);
jp1.add(text2);
jp2.add(label3);
jp2.add(text3);
jp2.add(label4);
jp2.add(text4);
jp3.add(label5);
jp3.add(text5);
jp4.add(jb1);
jp4.add(jb2); add(jp1);
add(jp2);
add(jp3);
add(jp4); setBounds(100,100,350,180);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
}
结果
java 实验5 图形用户界面设计试验的更多相关文章
- java 实验6 图形用户界面设计试验(2)
共两大题 窗体实现(略去测试类即 实例化自定义窗体) 小结: 1. JRadioButton 单选按钮 ButtonGroup 按钮集合(加入单选按钮) 清空选项需让ButtonGroup调用clea ...
- JAVA记事本的图形用户界面应用程序含过滤
JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...
- JAVA记事本的图形用户界面应用程序含加密
JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...
- AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API
抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...
- JAVA记事本的图形用户界面应用程序
JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...
- 借助WindowBuilder插件轻松完成JAVA图形用户界面编辑
如果以纯代码的形式进行JAVA的图形用户界面编辑,将是一件非常痛苦的事,博主在学习过程中发现了JAVA GUI编辑神器——WindowBuilder,提供可视化的编辑界面,控件的添加.排版只需使用鼠标 ...
- 黑马程序员——【Java基础】——GUI(图形用户界面)
---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...
- java第八节 GUI/图形用户界面
/* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...
- 抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面GUI (Graphics User Interface)工具集,AWT可用 ...
随机推荐
- 搭建 redis 集群 (redis-cluster)
一 所需软件:Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址 ...
- partial function
[partial function] functools.partial(func[,*args][, **keywords]) Return a new partial object which w ...
- varchar和Nvarchar区别(转)
Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示 如果还为了这个纠结,就直接看看后面的解说,做决定吧. 一般如果用到中文或者其 ...
- unity animation readonly 无法加事件?
目前找到的解决方案是用代码加Event: using System.Collections; using System.Collections.Generic; using UnityEngine; ...
- Zookeeper 源码(七)请求处理
Zookeeper 源码(七)请求处理 以单机启动为例讲解 Zookeeper 是如何处理请求的.先回顾一下单机时的请求处理链. // 单机包含 3 个请求链:PrepRequestProcessor ...
- Java线程死锁查看分析方法
如何查看是否有Java线程死锁?下面介绍两种方法. 一.Jconsole Jconsole是JDK自带的图形化界面工具,使用JDK给我们的的工具JConsole,可以通过打开cmd然后输 ...
- CentOS7通过 yum安装路径查询方法
CentOS7通过 yum安装路径查询方法 rpm -qa 然后执行 rpm -ql 软件名称 就可以显示软件的安装路径. 原文博客的链接地址:https://cnblogs.com/qzf/
- Yii2 upload
http://webtips.krajee.com/advanced-upload-using-yii2-fileinput-widget/ http://webtips.krajee.com/upl ...
- sqlserver2012 清除日志
1. backup log wwgl_demo to disk='D:\DATA_BACKUP\2017-07-19.log' 2. 右键数据库-->任务-->收缩-->文件 ...
- Redis持久化(八)
Redis特性: (1)多数据库 (2)Redis事物 (3)一个Redis最多可提供16个数据库,下标[0-15] 选择数据库: select 1 (选择1号数据库,默认连接的是0号数据库)移动数据 ...