常用布局

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. python 黑魔法 ---上下文管理器(contextor)

    所谓上下文 计算机上下文(Context)对于我而言,一直是一个很抽象的名词.就像形而上一样,经常听见有人说,但是无法和现实认知世界相结合. 最直观的上下文,莫过于小学的语文课,经常会问联系上下文,推 ...

  2. Android bitmap转byte

    逆转start协议输出 private static byte[] bitmap2byte(Bitmap bmp) throws Exception{ return bitmap2byte(bmp, ...

  3. 27-python 画图

    绝佳教程:http://pyecharts.org/#/zh-cn/prepare?id=%E4%BD%BF%E7%94%A8%E4%B8%BB%E9%A2%98安装 pyecharts pip in ...

  4. Template7学习记录

    来源:http://idangero.us/template7/#.V2iXqJGF6Ul 测试用json数据: var jsonData = { people: [ { firstName: 'Jo ...

  5. C语言中的undefined behavior

    参考: http://www.cnblogs.com/aoaoblogs/archive/2010/08/31/1813982.html

  6. 宽字符、多字节、unicode、utf-8、gbk编码转化

    今天遇到一个编码的问题,困惑了我很长时间,所以就简要的的了解了一下常用的编码类型. 我们最常见的是assic编码,它是一种单字节编码,对多容纳256个字符. 我们在编程的时候经常遇到unicode,u ...

  7. [SoapUI]获取Project,Test Suite,Test Case各个级别参数的值

    String testResultPath = testRunner.testCase.testSuite.project.getPropertyValue( "testResultPath ...

  8. Java Thread系列(七)死锁

    Java Thread系列(七)死锁 当线程需要同时持有多个锁时,有可能产生死锁.考虑如下情形: 线程 A 当前持有互斥所锁 lock1,线程 B 当前持有互斥锁 lock2.接下来,当线程 A 仍然 ...

  9. asp.net 自定义节配置 (configSections下的section)

    <configuration> <configSections> <!--.自定义一个节 CustomSection --> <section name=&q ...

  10. [转]TCP的拥塞控制

    1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...