Java GUI基础

GUI基础编程

GUI编程就是提供一个图形化的界面用于人机交互,图形化界面可以拆分为大框架、小容器、以及组件构成。加上相应的事件监听器实现人机交互。总的来说图形化编程就是围绕着框架、容器、组件开展的,而框架和容器又牵扯到了布局,有了这几个工具就可以实现自己想要的图形化界面

  • AWT(Abstract Window Toolkit)包括了很多类的接口,用于Java Application的 GUI(Graphics User Interface图形用户界面)编程。
  • GUI的各种元素(如:窗口,按钮,文本框)由Java类实现。
  • 使用AWT所涉及的类一般在 java.awt 包及其子包中。
  • Container 和 Component 是AWT中的核心。
  • 布局:流布局 网格布局等许多布局方式,请参考 LayoutManager 接口
  • 组件: 文本框 按钮等都属于组件 请参考Component类
  • 事件(监听): 鼠标事件 键盘事件 请参考 Event MouseEvent MouseListener KeyEvent KeyListener

图形化界面主要是利用AWT、SWING包的类,awt和swing中的类又相互有继承关系,下面给出继承树:
注:对两种组件的理解,java中把依靠本地平台的组件(AWT)称其为重量级组件,不依靠本地平台的组件(Swing)称为轻量级组件,Swing组件名称和AWT组件的名称类似(前面多加了个J)Swing中的JComponent类是继承java.awt.Containerd的子类,这就建立了两个组件之间的继承关系。但是Swing组件中Jwindow 、JFrame、JDialog是
继承的AWT中的Window类,这三个类是swing中的顶级容器哦!属于重量级组件。
Java GUI基础_第1张图片

JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。(JFrame是继承Frame的子类)

JPanel是一个容器类,相当于一大玻璃窗。
JLabel等是一些基础组件,它必须置于某个容器里,类似于窗花、剪纸,必须置于窗户的表面。

这样一个GUI的简单框架就了解了,首先创建一个框架(JFrame)、向框架中按照布局的格式添加容器(JPanel 等)、然后向容器中添加组件(JLable)

第一个简单的小栗子:
//这个小栗子就是添加框架、容器、组件步骤。

public class GUI {
	public static void main(String[] args) {
		JFrame jgFrame = new JFrame();
		JPanel jPanel = new JPanel();
		Button button = new Button("but");
		jgFrame.setLayout(new GridLayout());
		jPanel.add(button);
		jgFrame.add(jPanel);
		jgFrame.setVisible(true);
	}
}

第二个简单的小栗子:
//这个例子实现事件监听机制

package test;

import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUI {
	public static void main(String[] args) {
		JFrame jgFrame = new JFrame();
		JPanel jPanel = new JPanel();
		Button button = new Button("but");
		Monitor bh = new Monitor();
		button.addActionListener(bh);
		jgFrame.setLayout(new GridLayout());
		jPanel.add(button);
		jgFrame.add(jPanel);
		jgFrame.setVisible(true);
	}
}

class Monitor implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		System.out.println("a button has been pressed");
	}
}

第三个小栗子:布局
//布局一般有五种:流式布局、网格布局、网格包布局、边界布局、卡片布局。下面是一个网格布局的例子

package test;

import java.awt.Button;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class GUIaloyt {
	public static void main(String[] args) {
		JFrame jgFrame = new JFrame();
		jgFrame.setBounds(100, 100, 200, 200);
		JPanel jPanel = new JPanel();
		jgFrame.setLayout(new GridLayout());
		jPanel.setLayout(new GridLayout(4,4,3,3));
		for(int i=1;i<=16;i++)
		{
			JButton jButton=new JButton("i");
			jPanel.add(jButton);
		}
		jgFrame.add(jPanel);
		jgFrame.setVisible(true);
	}
}

你可能感兴趣的:(JavaGUI)