Java
This presentation is the property of its rightful owner.
Sponsored Links
1 / 196

Java 语言程序设计 PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on
  • Presentation posted in: General

Java 语言程序设计. 上海大学春季学期. 教学参考书. 实践大师: JAVA 2 编程篇 JAVA 2 Programmer ’ s Interactive Workbook 电子工业出版社 文字 JAVA 面向对象程序设计教程 清华大学出版社 Java 语言导学 机械工业出版社. 实验教学指导书. 《JAVA 与 面向对象程序设计实验指导与习题集 》 清华大学出版社. 教学安排. 上课: 周三下午 1~2 节 上机: 周三下午 3~4 节 (第二周开始上机 C420 、 421 ). 学 习 方 法.

Download Presentation

Java 语言程序设计

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Java

Java语言程序设计

上海大学春季学期


Java

教学参考书

  • 实践大师:JAVA 2 编程篇JAVA 2 Programmer’s Interactive Workbook电子工业出版社文字

  • JAVA 面向对象程序设计教程

    清华大学出版社

  • Java语言导学

    机械工业出版社


Java

实验教学指导书

《JAVA与 面向对象程序设计实验指导与习题集》

清华大学出版社


Java

教学安排

上课:周三下午1~2节

上机:周三下午3~4节

(第二周开始上机C420、421)


Java

学 习 方 法

Not to study, But to learn.

少做笔记,多听、多动手。


Java

课 程 考 试

平时情况与考试情况相结合

书面考试与上机实验相结合


Getting started

第一章 Getting Started

  • 1. 关于Java技术

  • 2 . Java开发工具包的安装与配置

  • 3. Java程序的建立、编译与运行

  • 4. 程序HelloWorld的分析


1 1 java

1.1 关于Java技术

IT 界到处都在谈论Java技术,但是Java技术到底是什么?下面我们介绍Java编程语言和Java平台。


1 1 1 java

1.1.1 Java编程语言

Java编程语言是一种高级编程语言,它具有如下性质:

• 简单 Simple • 稳固 Robust

• 高性能 High performance •安全 Secure

• 面向对象 Object oriented

• 多线程 Multithreaded •动态 Dynamic

•分布式Distributed

• 与平台无关 Platform independent

• 解释 Interpreted •轻便 Portable


1 1 1 java1

1.1.1 Java编程语言

对于大多数语言,要运行程序,要么编译程序要么解释程序;而Java语言的程序则既要被编译又要被解释。

  • 编译程序将Java源程序翻译为字节码(bytecode)程序;

  • 解释程序Java虚拟机分析并运行字节码程序。

    一次编写,处处运行

    Write once,run anywhere!


Java

用Java源程序先被编译、后被解释


Java

一次编写,处处运行


1 1 2 java

1.1.2 Java平台

• 平台(Platform)是程序在其中运行的硬件或软件环境。

• 最流行平台:Windows 2000, Linux,

Solaris, MacOS

• Java平台:一种运行在其它硬件平台上纯软件

平台,它有两个组件:

Java虚拟机(Java VM)和

Java应用编程接口(Java API)


1 1 2 java1

1.1.2 Java平台

• Java VM是Java平台的基础

• Java API是预先建立的软件组件的集合,提供丰富的功能,如GUI部件。 Java API被分为相关类和接口的库,这些库称为包(package)


Java api java vm

Java API和Java VM将程序与硬件分离


1 1 3 java

1.1.3 Java技术可以做什么

• Java程序的常见类型是Applet和Application

• Java平台的每种完整实现均提供如下功能:

  • 基本内容:对象、字符串、线程、输入/输出、数据结构、系统属性、日期、时间等;

  • Applets:与Java applet使用的一组约定;

  • 连网:URL、传输控制协议(TCP)、用户数据报协议(UDP)套接字和IP地址。

  • 国际化:帮助进行本地化的程序。


1 1 3 java1

1.1.3 Java技术可以做什么

(6) 安全:包括低层和高层安全性,如电子签名、 公共密钥和私有密钥管理、访问控制和证书。

(7) 软件组件:称为Java Beans的组件可以插入现有的组件体系结构。

(8) 对象串行化:通过远程方法调用(Remote Method Invocation, RMI)支持轻型的持久性和通信。

(9) Java数据库连接(JDBC):提供对各种关系数据库的统一访问。


Java 2 sdk

Java 2 SDK


1 2 java

1.2 Java开发工具包的安装与配置

为了鼓励使用Java语言开发软件,Sun Microsystems公司提供了免费的软件开发工具包(SDK),其中包括编译器、虚拟机、调试器等开发工具,称为Java开发工具包或JDK。Windows版和Solaris版的JDK可以从如下站点下载:

http://www.sun.com/products/jdk/1.2/index.html


1 2 java1

1.2 Java开发工具包的安装与配置

安装:执行安装程序,按提示即可。


1 2 java2

1.2 Java开发工具包的安装与配置

路径配置:加入路径C:\jdk1.3\bin

SET PATH=%PATH; C:\jdk1.3\bin

环境变量:

SET CLASSPATH=%CLASSPATH;.;C:\JDK1.3\Lib


1 3 java

1.3Java程序的建立、编译与运行

• 创建第一个应用程序:程序HelloWorldApp将显示一句问候语“HelloWorld!”。

• 创建第一个小应用程序:程序HelloWorld也将显示一句问候语“HelloWorld!”。


1 3 1

1.3.1创建第一个应用程序

Step1:创建源代码文件;

Step2:将源代码文件编译为字节码文件;

Step3:运行字节码文件


1 3 1 1

1.3.1.1 创建源代码文件

启动“记事本”,输入如下代码:

public class HelloWorldApp {

public static void main(String[] args) {

//Display the string.

System.out.println("Hello World!");

}

}

注意:大小写敏感;文本文件;文件名为<类名>.java


1 3 1 2

1.3.1.2 编译源代码文件

  • 进入DOS或Command提示符状态;

  • 转到Java源程序所在目录,如C:\java

  • 输入如下命令,并回车:

    javac HelloWorldApp.java

    注意:编译成功后将生成字节码文件

    HelloWorldApp.class


1 3 1 3

1.3.1.3 运行程序

在相同目录下输入如下命令,并回车:

java HelloWorldApp


1 3 2

1.3.2 创建第一个小应用程序

Step1:创建源代码文件;

Step2:配套的HTML文件;

Step3:将源代码文件编译为字节码文件;

Step4:运行程序。


1 3 2 1

1.3.2.1 创建源代码文件

启动“记事本”,输入如下代码,并保存为HelloWorld.java

import java.applet.Applet;

import java.awt.Graphics;

public class HelloWorld extends Applet {

public void paint(Graphics g) {

g.drawString("Hello world!", 50, 25);

}

}


1 3 2 2 html

1.3.2.2 创建相应的HTML文件

在“记事本”,输入如下代码,并保存为Hello.html

<HTML>

<HEAD>

<TITLE> A Simple Program </TITLE>

</HEAD>

<BODY>

Here is the output of my program:

<APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25>

</APPLET>

</BODY>

</HTML>


1 3 2 3

1.3.2.3 编译源代码文件

  • 进入DOS或Command提示符状态;

  • 转到Java源程序所在目录,如C:\java

  • 输入如下命令,并回车:

    javac HelloWorld.java

    注意:编译成功后将生成字节码文件

    HelloWorld.class


1 3 2 4

1.3.2.4 运行程序

输入如下命令,并回车:

appletviewer Hello.html


1 4 helloworld

1.4 程序HelloWorld的分析

既然我们已经编译并运行了第一个Java程序,我们自然想知道它的工作原理。本节我们首先分析HelloWorldApp应用程序,然后再分析HelloWorld小应用程序。


1 4 1

1.4.1 对应用程序的分析

• 注释:

/* 文本 */

/** 文本 */


1 4 11

1.4.1 对应用程序的分析(续)

• 定义类:

类是面向对象语言的基本构件。类是一个“蓝图”,描述此的实例(instance)相关联的状态和行为。当你实例化(instantiate)一个类时,就是创建一个对象,它的状态和行为与此类的其它实例相同。状态由成员变量表示;行为则由方法表示。


1 4 12

1.4.1 对应用程序的分析(续)

• main方法:

每个Java应用程序的入口点都是它的main方法。当运行Java应用程序时,指定要运行的类的名称,Java解释器调用该类中定义的main方法,由main方法控制程序的流程、分配所需资源并运行为此应用程序提供功能的其它方法。


1 4 13

1.4.1 对应用程序的分析(续)

每个Java应用程序必须声明一个mian方法:

public static void main(String[] args)

修饰符:

public:允许任何类调用main方法;

static:表示main方法与HelloWorldApp类相关联,

而不是在这个类的一个实例上进行操作。

void: 表示main方法不返回任何值。

String:命令行参数。


1 4 14

1.4.1 对应用程序的分析(续)

• 使用类和对象

该程序使用了System类。 System类提供的功能之一是标准输出流。System.out是System类中的out变量的完整名称。应用程序没有实例化System类,而是通过System类直接访问out,这是因为out是类变量,与类相关联,而不与对象相关联。类变量out引用PrintStream类的一个实例。当System类被载入时,它实例化PrintStream类,并为类变量out分配一个新的PrintStream对象,再调用其实例方法:System.out.println(“Hello World!”)


1 4 2

1.4.2 对小应用程序的分析

•导入类和包

两条import语句分别导入Applet和Graphics类,从而可以引用其它包中的类。如果删除这两行,则须修改程序如下:

public class HelloWorld extends java.applet.Applet {

public void paint(java.awt.Graphics g) {

g.drawString("Hello world!", 50, 25);

}

}


1 4 21

1.4.2 对小应用程序的分析

•定义Applet子类

public class HelloWorld extends Applet

关键字extends表示HelloWorld类是Applet类的一个子类。每个小应用程序applet都必须是Applet类的一个子类,从而继承Applet类的功能,从与浏览器通信到GUI。


1 4 22

1.4.2 对小应用程序的分析

•实现applet的方法

HelloWorld applet只实现了一个方法paint。

与应用程序不同,applet不需要main方法。

Applet应包含在HTML页面中。


1 4 23

1.4.2 对小应用程序的分析

•运行applet的方法

当支持Java的浏览器遇到<APPLET>标记时,为applet保留屏幕显示空间,将Applet子类装载进它所在的计算机,然后创建Applet子类的一个实例。


Java

1.5 常见错误

  • 编译时错误

    路径设置错、文字输入错

  • 运行时错误

    源文件名与public类名不一致

    类的数量

    源文件格式


Java

第二章 基本概念

  • 2.1 注释与程序段

    注释 // /* */

    分号 ;

    程序段 { }

    空白


Java

第二章 基本概念(续)

  • 2.2 标识符

    字母、下划线或$开头的字母、数字、下划线和$构成的字符串。

  • 2.3 Java语言的关键字

    保留字


2 4 java

2.4 Java基本数据类型

  • 分四大类:逻辑、字符、整数和浮点

    共9种基本数据类型

    逻辑类型:boolean

    字符类型:char和string

    整数类型:byte,short,int和long

    浮点类型:float和double


2 6 java

2.6 Java 编程习惯

  • 程序可读性

    类、接口:通常使用名词,且每个单词的

    首字母要大写

    方法:可以是动词,首字母小写,其后用大写

    字母分隔每个单词

    常量:全部大写,单词之间用下划线分隔

    变量:同方法,应该避免使用$符号


Java

第二章 基本概念

  • 2.1 注释与程序段

    注释 // /* */

    分号 ;

    程序段 { }

    空白


Java

第二章 基本概念(续)

  • 2.2 标识符

    字母、下划线或$开头的字母、数字、下划线和$构成的字符串。

  • 2.3 Java语言的关键字

    保留字


2 4 java1

2.4 Java基本数据类型

  • 分四大类:逻辑、字符、整数和浮点

    共9种基本数据类型

    逻辑类型:boolean

    字符类型:char和string

    整数类型:byte,short,int和long

    浮点类型:float和double


2 6 java1

2.6 Java 编程习惯

  • 程序可读性

    类、接口:通常使用名词,且每个单词的

    首字母要大写

    方法:可以是动词,首字母小写,其后用大写

    字母分隔每个单词

    常量:全部大写,单词之间用下划线分隔

    变量:同方法,应该避免使用$符号


2 6 java2

2.6 Java 编程习惯(续)

  • 程序可读性

    控制结构:if-then-else和for语句等中的

    语句或语句组要用{}

    间隔:每行一条语句,并且采缩进格式

    注释:尽量多注释


Java

2.7 对象概念用一个下午学习,用一生去掌握

  • 复合数据类型:多个不同类型变量的组合,如structure,record

  • 类:在OOP中将复合数据类型称为类(class)

  • 对象:某个类的实例

  • 成员:构成对象的基本元素

  • 引用:其值为地址者


Java

2.8 变量概述

  • Java“类”定义对象,对象就是数据和处理,或表示这些数据的操作。变量是类中数据的“容器”,也被称为“域”(field)。

  • 变量声明:在使用变量之前,类必须定义变量的类型和名字,即先定义,后使用。

    例如:

    String myOutPut;


Java

2.8 变量概述(续)

  • 变量赋值:<变量名> = <表达式>;

  • 变量作用域:变量起来作用的范围,即在那里存在和在那里不存在。作用域判断:变量只在声明它的代码块中以及该块内所包含的任何块中。在此区域之外该变量既不存也不能被引用。


2 8 eample

import java.applet.Applet;

public class scopeTest extends Applet

{

String myString = "Hello";

public void init()

{

doPrintSomething();

doPrintSomethingElse();

}

public void doPrintSomething()

{

String notPrinted;

notPrinted = "Hi!";

String localString = "World!";

System.out.println(myString + " " + localString);

}

public void doPrintSomethingElse()

{

String localString = "Everybody!";

System.out.println(myString + " " + localString);

}

}

2.8 变量概述-Eample


Java

2.9 方法概要

  • 方法(method):定义类能够执行的动作和如何执行这些动作。

  • 方法分为三类:转换器:接受修改内部变量值的方

    法;

    访问器:获取内部变量值的方法;效果器:执行某个动作的方法。


Java

2.9 方法概要(续)

public void doPrintSomething(String something)

{

System.err.println(foo);

}

调节器

返回类型

名称

参数列表


Java

2.9 方法命名参考

  • 方法名体现其所完成的任务

  • 方法名以小写字母开头,将划分单词界线的字母大写

  • 对转化器,加前缀“set”;对访问器,加前缀“get”;对效果器,加前缀“do”。


Java

第三章 数据类型你和我不是同一种人 委婉的拒绝

  • 物以类聚,人以群分

  • 计算机的世界,即数据的世界,用数据表达信息,不同种类的信息以类型表征。


Java

第三章 数据类型你和我不是同一种人 委婉的拒绝

  • 物以类聚,人以群分

  • 计算机的世界,即数据的世界,用数据表达信息,不同种类的信息以类型表征。


Java

3.1 原始数据类型

类型 含义

Byte 8位整数

Short 16位整数

Int 32位整数

long 64位整数

float 单精度浮点数

double 双精度浮点数

char 16为Unicode字符

boolean 布尔型


Java

数据类型int

举例:

int x;

x = 5;

System.out.println(x);


Java

数据类型int(续)

举例:

int x = 5;

System.out.println(x);

---------------------

x=5+20;

System.out.println(x);

x= x+1;

System.out.println(x);


Float double

数据类型float、double

举例:

float price = (float) 7.25*5;

System.out.println(x);

double val1 = 7.0/9.0;

double val2 = 2.0/9.0;

double val3 = val1+val2;

System.out.println(val1);

System.out.println(val2);

System.out.println(val3);


Java

数学运算符

  • + 加

  • - 减

  • * 乘

  • / 除

  • % 取模(余)


3 2 string

3.2 String类

  • 类:对象的描述,正如设计图是住宅的描述一样,你可以按照设计图建造许多住宅,设计图是“类”的定义,而住宅则是设计图的实例化,即按照定义建造出的对象。


String

String构造

String firstName = “George”;

String lastName = new String(“Washington”);

System.out.println(firstName);

System.out.println(lastName);

构造器

Class variableName = new Class();

Class variableName = new Class(parameters);


String1

String构造

String firstName = “George”;

String lastName = new String(“Washington”);

System.out.println(firstName);

System.out.println(lastName);

构造器

Class variableName = new Class();

Class variableName = new Class(parameters);


String2

String合并

String firstName = “George”;

String lastName = new String(“Washington”);

String fullName = firstName + lastName;

System.out.println(fullName);

String fullName = firstName + “” + lastName;

System.out.println(fullName);


String length

String方法----Length()

String title = “Java 2 Programming”;

int len = title.Length();

System.out.println(len);

注意:字符串长度为其中所含字符的个数,包括

空格。


String indexof

String方法----IndexOf()

String title = “Java 2 Programming”;

int index= title. indexOf(“2”);

System.out.println(index);

5

注意:字符串索引自左到右,从0开始编号。


String substring

String方法----Substring()

String title = “Java 2 Programming”;

int firstHalf= title. substring(0,7);

int lastHalf= title. substring(7);

System.out.println(firstHalf);

System.out.println(lastHalf);


String3

String方法小结

public int length()

public int indexOf(String findme)

public String substring(int startIndex)

public String substring(int srartIndex,

int srartIndex+subLength)


Java

3.3 数 组

  • 数组:相似元素的有序集合

    同一数组中的元素必须类型相同,如int数组、double数组、String数组和char数组等。


Java

数组定义

举例

int firstArray[];

int secondArray[] = new int[10];

int thirdArray[] = {10,12,-10,100};

firstArray为整型空(null)数组,secondArray为10个元素整型数组,thirdArray有4个int值(分别为10,12,-10,100)的数组


Java

数组访问

数组访问方法:<数组名>[index]

数组元素索引:从0开始递增

例如:

System.out.println(thirdArray[0]);

System.out.println(thirdArray[1]);

thirdArray[2]=168; //数组元素赋值

System.out.println(thirdArray[2]);


Length

数组长度 length域

  • 数组中的元素个数称为数组长度,所有数组均有一个length域记录数组长度。

  • 举例

    Char letters[] = {‘a’,’b’,’c’};

    System.out.println(letters.length);

    3

    System.out.println(letters);//作为字符串输出


Java

数组使用举例

String names[]={“John”, “Mary”, “Robert”};

String people[];

people = names;

System.out.println(names[0]);

System.out.println(people[2]);

System.out.println(names);//无效


Java

3.4 向量

  • 向量:对象的集合。

    其中,各元素可以不必同类型,元素可以增加和删除,不能直接加入原始数据类型


Java

向量使用

首先必须在程序开始处加入:

import java.util.Vector;

==================

Vector v = new Vector();

String s = new String(“Hello”);


Java

向量使用(续)

v.add(s);

v.add(“Goodbye”);

System.out.println(v);

System.out.println(v.size());

[Hello, Goodbye]

2


Java

向量使用(续2)

boolean success = v.remove(s);//v.remove(“Hello”)

System.out.println(v);

System.out.println(success);

System.out.println(v.size());

[Goodbye]

True

1


Vector

Vector方法

public boolean add(object o)

public boolean remove(object o)

public int size()

public Enumeration element()


Java

在向量中使用封装器

  • 由于Java不把原始数据类型当作对象来处理,向量中就不允许存储原始数据类型的数据,为此,Java又引入如下新的类以封装原始数据类型:

    Integer

    Float

    Double

    Character

    Boolean


Java

在向量中使用封装器(续)

举例

Integer I = new Integer(211);

Int i = I.intValue();

System.out.println(i);


Java

封装器类小结

Integernew Integer(int i) intValue()

Float new Float(float f) floatValue()

Double new Double(double d) doubleValue()

Character new Character(char c) charValue()

Boolean new Boolean(boolean b) booleanValue()


Java

封装器使用举例

String name = new String(“John Smith”);

Integer age = new Integer(30);

Double salary = new Double(8675.88);

Vector record = new Vector();

record.add(name); record.add(age);

record.add(salary);System.out.println(record);


Java

枚举

Enumeration(枚举)类允许列举向量元素,

通过elements()方法得到Enumeration对象。

public boolean hasMoreElements()

public Object nextElement()


Java

枚举举例

import java.util.*;

Vector dogs = new Vector();

dogs.add(“Rambo”);dogs.add(“Feisy”);

Enumeration names = dogs.elements();

System.out.println(names.hasMoreElements());

System.out.println(names. nextElement());

System.out.println(names.hasMoreElements());

System.out.println(names. nextElement());

System.out.println(names.hasMoreElements());


Java

枚举举例(续)

显示结果

true

Rambo

true

Feisy

false


Java

枚举举例(续2)

public class ThreeStoogesExample

{

public static void main(String args[])

{

// ThreeStoogesExample

Vector stooges = new Vector();

stooges.add("Larry"); stooges.add("Curly");

stooges.add("Moe");


Java

枚举举例(续3)

stooges.remove("Curly");stooges.add("Shemp");

System.out.println("The " + stooges.size()+ "Stooges");

Vector actors = new Vector();

actors.add("Bob"); actors.add("Ted");

actors.add("Alice"); actors.add(stooges);

System.out.println(actors.size());

System.out.println(actors);}}


Java

枚举举例(续4)

The 3Stooges

4

[Bob, Ted, Alice, [Larry, Moe, Shemp]]


Nextelement

nextElement()返回类型

  • nextElement()返回类型是Object类

  • 如需将该值赋给变量,必须强制类型转换

    String name = (String) names.nextElement();


Java

补充实例1

public class IsLowerCaseExample {

public static void main(String args[]) {

// IsLowerCaseExample

char letter= 'f';

boolean lowerCase = Character.isLowerCase(letter);

System.out.println("Is letter lower case? " + lowerCase);

letter = ' F';

boolean upperCase = Character.isUpperCase(letter);

System.out.println("Is letter upper case? " + upperCase);

}

}


Java

补充实例2

public class UseSubString

{

public static void main(String args[])

{

// UseSubString

String source= "abcdefghijklmnop";

String s;int len;

s=source.substring(4,7); len=s.length();

System.out.println(s); System.out.println(len);

}

}


Java

补充实例3

public class UseTheForceExample{

public static void main(String args[]){

// UseTheForceExample

String force = "Use the force, Luke!";

String findString = "Luke";

int findStringLength = findString.length();

int startIndex = force.indexOf(findString);

int endIndex = startIndex + findStringLength;

String subStr = force.substring(startIndex, endIndex);

System.out.println(startIndex); System.out.println(endIndex);

System.out.println(findStringLength);

System.out.println("Substring is " + subStr);}}


Java

第四章 流程控制

生活中充满着选择、充满着决定,

流程控制就是Java语言用于选择和决定的机制。


Java

4.1 布尔检验

目的:如何比较两个对象

相等比较

格式:A == B

说明:如A等于B,表达式A==B的值为true;

否则为false。


Java

4.1 布尔检验(续)

举例

System.out.println(“The expression 2==4 is ”);

System.out.println(2==4);

显示结果:

The expression 2==4 is

false


4 1 2

4.1 布尔检验(续2)

Equals()方法

对于String、Integer和Float的对象类型,用Equals()方法判断是否相等。

Integer I1=new Integer(2);

Integer I2=new Integer(2);

System.out.println(“Does I1 equals I2?”);

System.out.println(I1.Equals(I2));


4 1 3

4.1 布尔检验(续3)

注意:比较两个对象时用Equals()方法,比较原始数据类型时用==运算符。

大于/小于

A>B

A<B

A>=B

A<=B

A!=B


4 2 if then else

4.2 IF-THEN-ELSE

If-Then语句:

if (<条件表达式>)

<语句>;

说明:如果<条件表达式>为真,就执行<语句>;否则,不执行<语句>。


4 2 if then else1

4.2 IF-THEN-ELSE(续)

举例

int temperature = 38;

if (temperature>35)

System.out.println(“It’s too hot!”);

System.out.println(“Have a nice day.”);


4 2 if then else 2

4.2 IF-THEN-ELSE(续2)

举例

int temperature = 38;

if (temperature>35){

System.out.println(“It’s too hot!”);

System.out.println(“I want to go home!”);

}

System.out.println(“Have a nice day.”);


If then else

IF-THEN-ELSE

if (<条件表达式>)

<语句1>;

else

<语句2>;

说明:……


If then else1

IF-THEN-ELSE举例

int temperature = 38;

if (temperature>35){

System.out.println(“It’s too hot!”);

System.out.println(“I want to go home!”);

}

else

{ System.out.println(“Have a nice day.”);

System.out.println(“Let’s stay here.”);

}


Java

If语句的嵌套

If (<条件1>)

{…

if (<条件2>)

<语句2>;

}


Java

If语句的嵌套举例

行李费问题

随身免费携带20kg行李,40kg以内每kg收费1元,40kg以上每kg收费2元。


4 3 while

4.3 while 语句

格式:

while (<条件>)

<语句>;

说明:当<条件>为真时反复执行<语句>,直到<条件>为假时为止。


4 3 while1

4.3 while 语句举例

int x=0;

While (x<5) {

System.out.println(x);

x=x+1;

}


4 3 while2

4.3 while 语句举例(续)

int x=0,s=0;

While (x<5) {

System.out.println(x);

x=x+1;

s=s+x;

}

System.out.println(s);


4 3 while 2

4.3 while 语句举例(续2)

String s=“x”;

while (x.length()<4)

System.out.println(s+”is too short.”);

s=s+ “x”;

}

System.out.println(“All done!”);


4 3 while 3

4.3 while 语句举例(续3)

int x =100;

int y=0;

while (x>0){

y++;

x=x-10;

}

System.out.println("x="+x);

System.out.println("y="+y);


4 4 for

4.4 for循环

格式:

for (<初始化表达式>;<条件表达式>;<修改表达式>)

<语句>;


4 4 for1

4.4 for循环举例

S=0;

for (int i =1; i<5; i++){s=s+i;

System.out.println(“i=”+i);

}

System.ou.println(“s=”+s);


4 4 for2

4.4 for循环举例(续)

String colors[] = {"red", "yellow", "blue", "purple"};

for (int i = 0; i < colors.length; i++) {

System.out.println(colors[i]);

}


4 4 for 2

4.4 for循环举例(续2)

String colors[] = {"red", "yellow", "blue", "purple"};

for (int i = 0; i < colors.length; i++) {

if (colors[i].equals("blue")){

System.out.println("name = " + colors[i]);

System.out.println("index = " + i);

}

}


4 4 for 3

4.4 for循环举例(续3)

int maximum=10;

for(int i=0; i<=maximum;i++){

int square = i*i;

System.out.println(i+" square is "+square);

}


4 5 switch

4.5 switch 语句

int choice = 1;

switch (choice) {

case 0: System.out.println("Zero"); break; case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; default: System.out.println("Unknown");

}


4 5 switch1

4.5 switch 语句举例

char choice = 'c';

switch (choice) {

case 'a':

System.out.println("alpha"); break;

case 'b':

System.out.println("beta"); break;

case 'c':

System.out.println("charlie"); break;

default:

System.out.println("Unknown");

}


4 5 switch2

4.5 switch 语句举例(续)

int x = 2; switch (x) {

case 0:

case 2:

case 4: System.out.println("small");

case 6:

case 8: System.out.println("even"); break;

default:

System.out.println("odd");

}


4 5 switch 2

4.5 switch 语句举例(续2)

char grade;

String rating;

grade = 'B';

switch (grade) {

case 'A': rating = "Excellent"; break;

case 'B': rating = "Good"; break;

case 'C': rating = "Average"; break;

case 'D': rating = "Poor"; break;

case 'F': rating = "Failure"; break;

default: rating = "Confused";

}

System.out.println("Grade is " + grade);

System.out.println("Rating is " + rating); }


Java

二重循环例

public class testArray

{

public static void main(String args[])

{

int x[][] = new int [2][3];

int i,j;

for (i=0;i<2;i++)

for (j=0;j<3;j++) x[i][j]=i+j;

for (i=0;i<2;i++) {

System.out.println();

for (j=0;j<3;j++)

System.out.print(x[i][j]);

}

}

}


Java

二重循环例(续1)

public class Findmax

{

public static void main(String args[])

{

int a[][]={{8,4,2,1},{9,0,7,5},{-10,12,-5,3}};

int i,j,row=0,col=0,max;

max=a[0][0];

for (i=0;i<3;i++){

for (j=0;j<4;j++)

if (a[i][j]>max){max=a[i][j];row=i;col=j;}

}

System.out.println("max="+max);

}

}


Java

二重循环例(续2)

public class sortbubble

{

public static void main(String args[])

{

// sortbubble

int a[]={8,4,2,9,0,7,5,3,6,1};

int i,j,k,t;

for (i=9;i>0;i--)

for(j=0;j<i;j++)

if (a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

for (i=0;i<10;i++)

System.out.println(a[i]);

}

}


Java

二重循环例(续3)

public class sortbubble2

{

public static void main(String args[])

{

// sortbubble

int a[]={8,4,2,9,0,7,5,3,6,1};

int i,j,k,t;

for (i=0;i<=9;i++)

for(j=9;j>i;j--)

if (a[j]<a[j-1]) {t=a[j];a[j]=a[j-1];a[j-1]=t;}

for (i=0;i<10;i++)

System.out.println(a[i]);

}

}


Java

二重循环例(续4)

  • public class sortbubble3

  • {

  • public static void main(String args[])

  • {

  • // sortinsert

  • int a[]={8,4,2,9,0,7,5,3,6,1};

  • int i,j,k,t;

  • for (i=9;i>0;i--)

  • for(j=0;j<i;j++)

  • if (a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}

  • for (i=0;i<10;i++)

  • System.out.println(a[i]);

  • }

  • }


Java

二重循环例(续5)

public class sortselect

{

public static void main(String args[])

{

int a[]={8,4,2,9,0,7,5,3,2,1};

int i,j,k,t, len=a.length;

for (i=0;i<len-1;i++){

k=i;

for (j=i+1;j<len;j++) if (a[j]<a[k]) k=j;

t=a[k];a[k]=a[i];a[i]=t;

}

for (i=0;i<10;i++) System.out.println(a[i]);

}

}


Java

二重循环例(续6)

public class sortinsert

{

public static void main(String args[])

{

int a[]={8,4,2,9,0,7,5,3,6,1};

int i,j,t;

for (i=1;i<10;i++){

t=a[i];

for (j=i-1;j>=0;j--) if (a[j]<=t) break; else a[j+1]=a[j];

a[j+1]=t;

}

for (i=0;i<10;i++) System.out.println(a[i]);

}

}


Arrays sort

排序方法Arrays.sort()

import java.util.*;

class sortmethod {

public static void main(String arguments[]){

int numbers[]={9,2,7,5,3,6,4,0,1,8};

System.out.println("The original order:");

for (int i = 0;i<numbers.length;i++)

System.out.println(i+":"+numbers[i]);

Arrays.sort(numbers);

System.out.println("The new order:");

for (int i = 0;i<numbers.length;i++)

System.out.println(i+":"+numbers[i]);

}

}


Arrays sort1

排序方法Arrays.sort(续)

import java.util.*;

class Name {

public static void main(String arguments[]){

String names[]={"Akbar","Umberto","Percival","Zemo","Diego"};

System.out.println("The original order:");

for (int i = 0;i<names.length;i++)

System.out.println(i+":"+names[i]);

Arrays.sort(names);

System.out.println("The new order:");

for (int i = 0;i<names.length;i++)

System.out.println(i+":"+names[i]);

}

}


5 to be or not to be is a problem shakespeare

第5章 布尔逻辑To be or not to be is a problem. ————Shakespeare

布尔运算:

  • AND运算符——Java表示:&&规则:当X和Y均为真时,X&&Y才为真

  • OR 运算符——Java表示:||规则:当X或Y为真时,X || Y就为真

  • NOT 运算符——Java表示:!规则:!X取X的“相反值”


Java

布尔逻辑举例

int temperature = 36,humidity=95;

if ((temperature>35) && (humidity >90))

{

System.out.println(“It’s not just hot,it’s humid”);

}


Java

布尔逻辑举例(续)

if ((miles>3000) && (month > 3))

{

System.out.println(“Your car warranty has expired!”);

}


Java

布尔逻辑举例(续2)

if ((miles>3000) || (month > 3))

{

System.out.println(“Your car warranty has expired!”);

}


Java

布尔逻辑举例(续3)

string password;

//Later

If(!password.equals(“open sesame”))

{

System.out.println(“Sorry,incorrect password”);

}


Java

布尔逻辑举例(续4)

String days[] ={"Sunday", "Monday", "Tuesday",

"Wednesday", "Thursday", "Friday", "Saturday"};

String today;// The day of the week. e.g. "Monday"

int timeHour;

boolean isSaturday = today.equals("Saturday");

boolean isSunday = today.equals("Sunday");

boolean afterTen = timeHour >= 10;

boolean beforeFour = timeHour < 16;

if ((isSaturday || isSunday) && (afterTen && beforeFour))

System.out.println("Mow the lawn.");

else

System.out.println("Do not mow the lawn!");


Java

布尔逻辑举例(续4)

int x=0,y=10;

While ((x<5)&&(y>5)){

System.out.println(“x=”+x);

System.out.println(“y=”+y);

x++;

y=y-5;

}


Java

布尔逻辑举例(续5)

int x=0,y=10;

While ((x<5)||(y>5)){

System.out.println(“x=”+x);

System.out.println(“y=”+y);

x++;

y=y-5;

}


Java

布尔逻辑举例(续6)

int x=0,y=10;

While (!(x<5)||!(y>5)){

System.out.println(“x=”+x);

System.out.println(“y=”+y);

x++;

y=y-5;

}


Java

5.2 布尔表达式

  • 优先级:!、&&、||

  • 从左到右

  • 括号改变优先级


Java

布尔表达式例

boolean b1, b2, b3;

b1 = true; // Change as needed.

b2 = true; // Change as needed.

b3 = true; // Change as needed.

if (b1 && (b2 || b3))

System.out.println("Yes");

else

System.out.println("No");


Java

布尔表达式例(续)

boolean isAthlete;

int SAT,int familyIncome;

isAthlete = true; // Change as needed.

SAT = 1200; // Change as needed.

familyIncome = 100000; // Change as needed.

if (isAthlete || (SAT > 1400) || (familyIncome < 30000)){

System.out.println("Scholarship");

}


Java

第六章 图形用户界面GUI如果不和人打交道,计算机的效率会更高

GUI基础

Java GUI由部件(component)和容器(container)组成

部件:与用户交互的项,如按钮、滚动条

和文本输入域。

容器:用于装载部件,如程序的启动封面、顶层窗口、弹出对话框。


Java

简单GUI例

程序见SimpleGUI.java


Simplegui

构造SimpleGUI的步骤

  • 构建一个顶层容器(JFrame);

  • 构建一个部件(JLabel);

  • 用容器的add方法将部件加入该容器;

  • 设置顶层容器大小;

  • 显示顶层容器。


Java

6.2 标签的使用

  • Swing的标签类JLabel

  • public JLabel(String text)

  • public JLabel(String text,int horizontalAlignment)

  • horizontalAlignment的取值SwingConstants.LEFT (缺省值) SwingConstants.CENTERSwingConstants.RIGHT


Java

6.2 标签的使用(续)

  • 水平对齐方式修改方法public void setHorizontalAlignment(int alignment)

  • 垂直对齐方式修改方法public void setVerticalAlignment(int alignment)

  • 垂直对齐方式取值SwingConstants.TOPSwingConstants.CENTER(缺省值)SwingConstants.BOTTOM


Java

6.2 标签的使用例

Jlabel rightLabel = new Jlabel(“I lean to the right”);

rightLabel.setHorizontalAlignment(SwingConstants.RIGHT);

rightLabel.setVerticalAlignment(SwingConstants.TOP);


6 3 gui

6.3 按钮的使用没有按钮的GUI就像没有鲜花的春天

  • Javax.swing.AbstractButton为标准按钮类型定义基本功能,所有按钮都能显示文本、图标。

  • JButtonJButton okButton = new JButton(“ok”);JPanel panel = new Jpanel(); panel.add(okButton);


Checkbox radiobutton

开关按钮—复选框checkbox、单选钮radiobutton

(1) Jcheck(String text,boolean selected)

其中,text表示复选框右边显示的文字, selected表示该复选框是否默认为被选择,如果缺省selected,表示默认为不被选择。

(2) JRadioButton(String text,boolean selected)


Java

按钮使用举例

参见程序ButtonApplet.java

参见程序ButtonsApplet.java


Buttonapplet

ButtonApplet

  • JButton button;

  • JCheckBox checkbox;

  • public void init()

  • {

  • JPanel contentPane = (JPanel)getContentPane();

  • contentPane.setLayout(new FlowLayout());

  • button = new JButton("OK");

  • checkbox = new JCheckBox("Beep when button is pressed", true);

  • contentPane.add(checkbox);

  • contentPane.add(button);


Button s applet

ButtonsApplet

  • JButton button;

  • ButtonGroup group;

  • JRadioButton greenButton, blueButton, redButton;

  • public void init()

  • {

  • JPanel contentPane = (JPanel)getContentPane();

  • contentPane.setLayout(new FlowLayout());

  • button = new JButton("OK");

  • greenButton = new JRadioButton("Green");

  • blueButton = new JRadioButton("Blue");

  • redButton = new JRadioButton("Red");

  • contentPane.add(greenButton);

  • contentPane.add(blueButton);

  • contentPane.add(redButton);

  • contentPane.add(button); }


Java

6.4 文本部件的使用

在GUI设计中,按钮和标签提供了极大的灵活性,但是很多时候GUI必须请求用户输入文字、密码、登录标识符、URL等。本节介绍几个最常见的文本输入部件。


6 5 1

6.5.1 文本域部件

  • JTextField和JPasswordField

  • 构造器JTextField(int colums) JTextField(String text) JTextField(String text,int colums)

  • 方法setText(String text) getText()


6 5 11

6.5.1 文本域部件(续)

  • 方法setHorizontalAlignment(int alignment) setVerticalAlignment(int alignment)

  • 举例

    程序TextApplet.java

    TextFieldApplet.java


Textapplet java

TextApplet.java

import javax.swing.*;

import java.awt.*;

public class TextApplet extends JApplet

{

JPanel contentPanel;

JLabel label;

JTextField textField;

public void init()

{

contentPanel = (JPanel)getContentPane();

contentPanel.setLayout(new FlowLayout());

label = new JLabel("Input text here: ");

textField = new JTextField("A default value", 20);

contentPanel.add(label);

contentPanel.add(textField);

}

}


Textfieldapplet java

TextFieldApplet.java

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class TextFieldApplet extends JApplet

{

JPanel contentPanel;

JLabel label;

JTextField textField;

JButton button;

public void init()

{

contentPanel = (JPanel)getContentPane();

contentPanel.setLayout(new FlowLayout());

label = new JLabel("Input text here: ");

textField = new JTextField("A default value", 20);

button = new JButton("OK");


Textfieldapplet java1

TextFieldApplet.java

// You know the drill-- action handling will

// be covered in a following chapter

button.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent evt)

{

doMyButtonAction();

}

});

contentPanel.add(label);

contentPanel.add(textField);

contentPanel.add(button);

}

public void doMyButtonAction()

{

showStatus(textField.getText());

}

}


Jtextarea

文本区域部件JTextArea

  • JTextArea构造器JTextArea(int rows,int colums) JTextArea(String text) JTextArea(String text, int rows,int colums)

  • textArea.setLineWrap(boolean wrap)

  • textArea.setWrapStyleWord(boolean word)


Jtextarea1

JTextArea举例

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class TextAreaApplet extends JApplet

{

JPanel contentPanel;

JTextArea textArea;

JButton button;

public void init()

{

contentPanel = (JPanel)getContentPane();

contentPanel.setLayout(new FlowLayout());

textArea = new JTextArea("A default value", 20, 40);

textArea.setLineWrap(true); button = new JButton("Clear");


Jtextarea2

JTextArea举例(续)

// You know the drill-- action handling will // be covered in a following chapter button.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent evt)

{

doMyButtonAction();

}

});

contentPanel.add(textArea);

contentPanel.add(button); }

public void doMyButtonAction()

{

// does nothing

}

}


Java

第七章 布局管理器

Java中的容器如Panel、Frame、Applet,每个容器都有与之相关的“布局管理器”。布局管理器是与容器一起工作的一个对象,负责“管理”容器中内容的“布局”,布局管理器能够控制每个部件的大小(size)、形状(shape)和位置(position)。

在Java中,“布局”与“容器”相分离。


Java

7.1 边框布局

网格布局(GridLayout) 将所有部件放置在一个网格中,所有东西均沿着整齐的行、列布局,每个部件大小相同。如果改变窗口大小,每个部件的大小都会相应改变,但仍然保持相同大小。

public BorderLayout()

public Component add(Component comp,

Object constarint)


7 1 1 1

7.1.1 边框布局例1

import java.awt.*;

  • import javax.swing.*;

  • import java.applet.Applet;

  • public class Fig7_1

  • extends Applet

  • {

  • public void init()

  • {

  • setLayout(new BorderLayout());

  • add(new JButton("North"), BorderLayout.NORTH);

  • add(new JButton("South"), BorderLayout.SOUTH);

  • add(new JButton("East"), BorderLayout.EAST);

  • add(new JButton("West"), BorderLayout.WEST);

  • add(new JButton("Center"), BorderLayout.CENTER);

  • resize(250, 150);

  • }

  • }


7 1 1 11

7.1.1 边框布局例1之结果


7 1 2 2

7.1.2 边框布局例2

  • import java.awt.*;

  • import javax.swing.*;

  • import java.applet.Applet;

  • public class Fig7_2

  • extends Applet

  • {

  • public void init()

  • {

  • setLayout(new BorderLayout());

  • add(new JButton("North"), BorderLayout.NORTH);

  • // add(new JButton("South"), BorderLayout.SOUTH);

  • // add(new JButton("East"), BorderLayout.EAST);

  • add(new JButton("West"), BorderLayout.WEST);

  • add(new JButton("Center"), BorderLayout.CENTER);

  • resize(250, 150);

  • }

  • }


7 1 2 21

7.1.2 边框布局例2之结果


7 1 3 3

7.1.3 边框布局例3

  • import java.awt.*;

  • import javax.swing.*;

  • import java.applet.Applet;

  • public class Fig7_3

  • extends Applet

  • {

  • public void init()

  • {

  • setLayout(new BorderLayout());

  • JLabel title = new JLabel("You are at the Border!", JLabel.CENTER);

  • add(title, BorderLayout.NORTH);

  • JLabel label = new JLabel("Passport #", JLabel.RIGHT);

  • add(label, BorderLayout.WEST);

  • JTextField text = new JTextField("1234567890");

  • add(text, BorderLayout.CENTER);

  • resize(250, 50);

  • }

  • }


7 1 3 31

7.1.3 边框布局例3之结果


Java

7.1 网格布局

网格布局(GridLayout) 将所有部件放置在一个网格中,所有东西均沿着整齐的行、列布局,每个部件大小相同。如果改变窗口大小,每个部件的大小都会相应改变,但仍然保持相同大小。

public GridLayout(int rows, int cols)

public GridLayout(int rows, int cols,

int hgap,int vgap)

public Component add(Component comp)


7 2 1

7.2 网格布局例1

  • import java.applet.Applet;

  • import java.awt.*;

  • import javax.swing.*;

  • public class Fig7_5 extends Applet {

  • /**

  • * Initializes the applet. You never need to call this directly; it is

  • * called automatically by the system once the applet is created.

  • */

  • public void init() {

  • String labels[] = {"One", "Two", "Three", "Four", "Five",

  • "Six", "Seven", "Eight", "Nine"};

  • setLayout(new GridLayout(3, 3));

  • for (int i=0; i<labels.length; i++)

  • add(new JButton(labels[i]));

  • resize(240, 180);

  • }


7 2 11

7.2 网格布局例1之结果


7 2 2

7.2 网格布局例2

public class Fig7_6 extends Applet {

/**

* Initializes the applet. You never need to call this directly; it is

* called automatically by the system once the applet is created.

*/

public void init() {

String labels[] = {"One", "Two", "Three", "Four", "Five",

"Six", "Seven", "Eight", "Nine"};

setLayout(new GridLayout(3, 3, 10, 10)); /*部件之间加了间隙 */

for (int i=0; i<labels.length; i++)

add(new JButton(labels[i]));

resize(240, 180);

}


7 2 21

7.2 网格布局例2之结果


7 2 3

7.2 网格布局例3

import java.awt.*;

public class Fig7_8

{

/**

* Constructor.

*/

public Fig7_8 () {

}

public static void main(String args[])

{

JFrame f = new JFrame("Exercise 7.2.1 c"); Container c = f.getContentPane();

c.setLayout(new GridLayout(4, 4, 5, 5));

for (int i=0; i<10; i++)

{

Integer I = new Integer(i); c.add(new JButton(I.toString()));

}

f.pack(); f.show();

}

}


7 2 31

7.2 网格布局例3之结果


7 2 32

7.2 网格布局例3之结果

在这种4X4网格布局中,如果只在该容器中加入10内容,就会出现以上未能填满4X4网格布局的结果。

信条:永远填满布局!

如果必须有一个“空白”单元格,可以加入一个空标签以填满,如:

add(new Label(“”))


Java

7.3 组合布局管理器

在Java中,可用的布局管理器有几十种,但没有一种是“完美的”。Java提供了能将各种布局管理器组合在一起的能力。

在Java中,容器可以包含其他容器,每个容器可以有不同的布局管理器。

GUI布局有时比编程更需要创造力。


7 3 1

7.3.1 将容器置于容器之中

两个容器:Applet、Jpanel

两个布局管理器:边框布局、网格布局

Applet是边框布局

Jpanel是网格布局

Jpanel置于Applet之中


7 3 11

7.3.1 组合布局例


7 3 12

7.3.1 组合布局例

setLayout(new BorderLayout());

JPanel panel = new JPanel();

String message = "Drive C: is not responding";

add(new TextArea(message), BorderLayout.CENTER);

panel.setLayout(new GridLayout(1, 3, 10, 5));

panel.add(new JButton("Abort"));

panel.add(new JButton("Retry"));

panel.add(new JButton("Fail"));

add(panel, BorderLayout.SOUTH);

resize(250, 100);


7 3 13

7.3.1 组合布局例

setLayout(new BorderLayout());

JPanel panel = new JPanel();

String message = "Drive C: is not responding";

add(new TextArea(message), BorderLayout.CENTER);

panel.setLayout(new GridLayout(1, 3, 10, 5));

panel.add(new JButton("Abort"));

panel.add(new JButton("Retry"));

panel.add(new JButton("Fail"));

add(panel, BorderLayout.SOUTH);

resize(250, 100);


7 3 2

7.3.2 组合布局例(续)


Java

import java.awt.*;

import javax.swing.*;

public class Fig7_10

extends Panel

{

/**

* Constructor.

*/

public Fig7_10 () {

super();

setLayout(new BorderLayout());

// Create new panels

Panel top = new Panel();

Panel middle = new Panel();

Panel bottom = new Panel();

// Set layouts of panels

top.setLayout(new BorderLayout());

middle.setLayout(new GridLayout(6, 7));

bottom.setLayout(new GridLayout(1, 3));


Java

// Add calendar components

// Top

top.add(new JButton("Previous Month"), BorderLayout.WEST);

JLabel month = new JLabel("October", JLabel.CENTER);

top.add(month, BorderLayout.CENTER);

top.add(new JButton("Next Month"), BorderLayout.EAST);

add(top, BorderLayout.NORTH);

// Middle

// Add days names

String days[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

for (int i=0; i<days.length; i++)

middle.add(new JButton(days[i]));

// Add days

for (int day=1; day<=31; day++)

{

Integer Day = new Integer(day);

middle.add(new JButton(Day.toString()));

}

add(middle, BorderLayout.CENTER);


Java

// Bottom

bottom.add(new JButton("Edit"));

bottom.add(new JButton("Save"));

bottom.add(new JButton("Quit"));

add(bottom, BorderLayout.SOUTH);

}

public static void main(String args[]) {

Frame f = new Frame("Exercise 7.3.1 c");

Fig7_10 figure = new Fig7_10();

f.add(figure, BorderLayout.CENTER);

f.pack();

f.show();

}

}


7 4 gridbaglayout

7.4 GridBagLayout布局管理器

GridBagLayout的工作方式类似于网格布局,有可以放置部件的“网格”,但GridBagLayout中的部件可以填充一个以上的网格单元,网格单元不必大小相同,可以相对另一个部件或用固定点来确定一个部件的位置。


7 4 gridbaglayout1

7.4 GridBagLayout布局管理器


7 4 gridbaglayout2

7.4 GridBagLayout布局管理器例

setLayout(new GridBagLayout());

JButton buttons[] = new JButton[7];

for (int i=0; i<buttons.length; i++)

buttons[i] = new JButton("Button " + i);

GridBagConstraints gbc = new GridBagConstraints();


7 4 gridbaglayout3

7.4 GridBagLayout布局管理器例

// First row.

// Add first row of buttons, all evenly spaced

// and expanded both horizonally and vertically.

gbc.fill = GridBagConstraints.BOTH;

gbc.weightx = 1; //Spread out horizontally

gbc.weighty = 1; // Spread out vertically

add(buttons[0], gbc);

add(buttons[1], gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;//End row!

add(buttons[2], gbc);


7 4 gridbaglayout4

7.4 GridBagLayout布局管理器例

// Second row

// One double-width button, and one double-height button

gbc.gridwidth = 2; //Double width

add(buttons[3], gbc);

gbc.gridwidth = 1;//Reset to single width

gbc.gridheight = 2;//Double height

add(buttons[4], gbc);


7 4 gridbaglayout5

7.4 GridBagLayout布局管理器

// Third row.

// Two single width buttons and bottom of button4.

gbc.gridx = 0;// Start new row

gbc.gridheight = 1;//Reset to single height

add(buttons[5], gbc);

gbc.gridx = 1;//Place in column 1

add(buttons[6], gbc);


To be continued

To be continued

Thanks for your reading!


  • Login