第十一周课程总结

第十一周课程总结

这一周只要是学习图形界面。在Java中的操作界面中,图形用户界面编程主要有以下几个特征:

  • 1)图形界面及其框架(图形界面对象之间的包含关系)。

  • 2)图形界面对象的布局(图形界面之间的位置关系)。

  • 3)图形界面对象上的事件响应(图形界面对象上的动作)。

在Java的图形界面开发中可以使用的技术有AWT和Swing两种。但是在AWT中大量的使用了Windows的系统函数,不是使用Java开发的,所以是重量级组件;而Swing是由Java来实现用户界面类,可以在任意的系统平台上工作,属于轻量级组件,但是在Swing中任然大量使用了AWT的概念。

一、AWT

AWT抽象窗口工具包,是Java提供的用来建立和设置Java图形用户界面的基本工具,在整个AWT包中提供的所有工具类主要分为:组件(Component)、容器(Container)、布局管理器(Layout Manager)。

二、Swing

在Java中提供了轻量级的图形界面组件——Swing,Swing使用Java语言实现,是以AWT平台为基础构建起来的新组件,直接使用Swing可以更加轻松地构建用户界面。

三、基本容器JFrame

如果现在使用Swing创建一个窗口,则直接使用JFrame类即可,此类是Component的子类,常用的操作方法:

package javabook;

import java.awt.*;
import javax.swing.*;

public class JavaSwing {

	public static void main(String[] args) {
		JFrame f=new JFrame("图形界面");          //实例化一个窗口
		Dimension d=new Dimension(600,480);          //实例化Dimension对象来控制窗口大小
		f.setSize(d);                                 
		f.setBackground(Color.WHITE);                 //设置窗口的背景颜色
		Point p=new Point(300,200);                  //设置显示坐标
		f.setLocation(p);                             //显示位置
		f.setVisible(true);                          //让组件显示
	}

}

四、标签组件JLabel

JLabel组件表示的是一个标签,本身是用于显示信息的,一般情况下是不能直接更改其显示内容的。创建完Label对象可以通过Container类中的add()方法加入到容器中。

package javabook;

import java.awt.*;
import javax.swing.*;

import javax.swing.JFrame;

public class JavaSwing2 {

	public static void main(String[] args) {
		JFrame f=new JFrame("图形界面");          //实例化一个窗口
		JLabel lab=new JLabel("java",JLabel.CENTER);         //实例化对象,使用居中对齐
		f.add(lab);                                 //向容器中加入组件
		Dimension d=new Dimension(600,480);          //实例化Dimension对象来控制窗口大小
		f.setSize(d);                                 
		f.setBackground(Color.WHITE);                 //设置窗口的背景颜色
		Point p=new Point(300,200);                  //设置显示坐标
		f.setLocation(p);                             //显示位置
		f.setVisible(true);  

	}

}

五、更改JLabel的文字样式

以上的内容只是使用了默认的字体和颜色显示,如果现在要想更改使用的字体,则可以直接使用Component类中定义的方法;

Public void setFont(Font f)
package javabook;

import java.awt.*;
import javax.swing.*;

public class JavaSwing3 {

	public static void main(String[] args) {
		JFrame f=new JFrame("图形界面");          //实例化一个窗口
		JLabel lab=new JLabel("java",JLabel.CENTER);         //实例化对象,使用居中对齐
		f.add(lab);                                 //向容器中加入组件
		Font fnt=new Font("Serief",Font.ITALIC+Font.BOLD,28);         //实例化对象
		lab.setFont(fnt);                                       //显示标签
		lab.setForeground(Color.RED);                             //设置标签颜色
		Dimension d=new Dimension(600,480);          //实例化Dimension对象来控制窗口大小
		f.setSize(d);                                 
		f.setBackground(Color.WHITE);                 //设置窗口的背景颜色
		Point p=new Point(300,200);                  //设置显示坐标
		f.setLocation(p);                             //显示位置
		f.setVisible(true);  


	}

}

六、布局管理器

了解了举办的窗口以及组件后,可以发现,如果不对窗口见习版面设计,则一个组件会直接充满整个窗口,所以在Java中专门提供了布局管理器来管理组件,通常布局管理器可以用不同的方式排列组件。每当需要重新调整屏幕大小或重新绘制屏幕上任一项时,都要用到布局管理器。在Swing中使用的所有布局管理器都实现Layout Manager接口,在Swing中主要使用5种常见的布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、绝对定位。

  • 1、FlowLayout
    属于流式布局管理器,使用此种布局管理器方式会使所有的组件像流水一样依次进行排序。
package javabook;

import java.awt.*;
import javax.swing.*;
		
public class JavaFlowLayout {

	public static void main(String[] args) {
		JFrame f=new JFrame("图形界面");          //实例化一个窗口
		//设置窗体中布局管理器为FlowLayout,所有的组件居中对齐,水平和垂直间距为3
		f.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
		for(int i=0;i<9;i++) {
			JButton but=new JButton("按钮-"+i);
			f.add(but);
		}
		Point p=new Point(600,200);                  //设置显示坐标
		f.setLocation(p);                             //显示位置
		f.setVisible(true);  
		
	}

}
  • 2、BorderLayout
    将一个窗口的版面划分为东西南北中五个区域,可以直接将需要的组件放到这五个区域中。

  • 3、GridLayout
    布局管理器是以表格的形式进行管理的,在使用此布局管理器说的时候必须设置显示的行和列数。

package javabook;

import java.awt.*;
import javax.swing.*;

public class JavaGridLayout {

	public static void main(String[] args) {
		JFrame f=new JFrame("图形界面");          //实例化一个窗口
		//设置窗体中布局管理器为GdriLayout,按3X5排列,水平和垂直间距为3
		f.setLayout(new GridLayout(3,5,3,3));
		for(int i=0;i<13;i++) {
			JButton but=new JButton("按钮-"+i);
			f.add(but);
		}
		f.pack();
		Point p=new Point(600,200);                  //设置显示坐标
		f.setLocation(p); 
		f.setVisible(true); 
	}

}
  • 4、CardLayout
    就是将一组组彼此重叠的进行布局,就像一张张卡片一样,这样每一次只会展示一个界面。

  • 5、绝对定位
    如果不想在窗口中指定布局管理器,也可以通过设置绝对坐标的方式完成布局,在Component中提供了setBounds()方法,可以定位一个组件的坐标,使用x,y的坐标表示方法。

原文地址:https://www.cnblogs.com/lyl68/p/11822929.html