常用布局

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 图形用户界面设计试验的更多相关文章

  1. java 实验6 图形用户界面设计试验(2)

    共两大题 窗体实现(略去测试类即 实例化自定义窗体) 小结: 1. JRadioButton 单选按钮 ButtonGroup 按钮集合(加入单选按钮) 清空选项需让ButtonGroup调用clea ...

  2. JAVA记事本的图形用户界面应用程序含过滤

    JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...

  3. JAVA记事本的图形用户界面应用程序含加密

    JAVA记事本的图形用户界面应用程序 加密 题目简介: 整体分析: 实验代码: import java.awt.EventQueue; import java.awt.event.ActionEven ...

  4. AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API

    抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...

  5. JAVA记事本的图形用户界面应用程序

    JAVA记事本的图形用户界面应用程序 整体分析: 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import ...

  6. 借助WindowBuilder插件轻松完成JAVA图形用户界面编辑

    如果以纯代码的形式进行JAVA的图形用户界面编辑,将是一件非常痛苦的事,博主在学习过程中发现了JAVA GUI编辑神器——WindowBuilder,提供可视化的编辑界面,控件的添加.排版只需使用鼠标 ...

  7. 黑马程序员——【Java基础】——GUI(图形用户界面)

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...

  8. java第八节 GUI/图形用户界面

    /* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...

  9. 抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面

    抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面GUI (Graphics User Interface)工具集,AWT可用 ...

随机推荐

  1. 群里一个高手写的url?传参执行php函数的小程序, 收藏下

    <?php // +---------------------------------------------------------------------- // | Copyright ( ...

  2. 22.Generate Parentheses (String; Back-Track)

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...

  3. JAVA-用HttpClient来模拟浏览器GET,POST

    一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等.所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要 ...

  4. 运行Junit单测时遇到的问题

    现在有两个办法解决: 1.junit版本降到4.10 2.导入hamcrest-core-1.3.jar 官网:JUnit now uses the latest version of Hamcres ...

  5. C语言字符编码处理

    一.字符编码识别 1.简介 uchardet是一个开源的用于文本编码检测的C语言库,其功能模块是用C++实现的,通过一定数量的字符样本独立的分析出文本的编码,当前已经支持UTF-8/GB13080/B ...

  6. ultraiso制作ubuntu u盘启动

    http://blog.csdn.net/yaoyut/article/details/78003061

  7. DataStage 七、在DS中使用配置文件分配资源

    DataStage序列文章 DataStage 一.安装 DataStage 二.InfoSphere Information Server进程的启动和停止 DataStage 三.配置ODBC Da ...

  8. xcconfig

    [xcconfig] 1.When you can use a .xcconfig file? Use .xcconfig files if you find yourself changing th ...

  9. 关于InvokeMethod Activity的异步调用

    讨论地址:http://www.cnblogs.com/foundation/archive/2009/12/17/1626617.html 结论是IsCompleted的设置被忽略,看代码里注释 u ...

  10. cmake 语法

    语法说明 CMakeLists.txt 文件遵循一种简单的语法包括 注释,命令和空格字符.注释使用#符号,从符号开始之后的一行都表示注释.命令包括命令名,左括号,分隔参数的空白字符和右括号.命令既可以 ...