JavaSE基础:GUI

------- android培训、 java培训、期待与您交流! ----------


GUI图形用户界面

两个包:java.AWT.*;   java.Swing.*;


窗体是一个独立的进程。

创建图形化界面:

    1、创建Frame窗体
    2、对窗体进行基本设置(大小、位置、布局)
    3、定义组件
    4、将组件通过add方法添加到窗体
    5、让窗体显示:setVisible(true) ;


事件监听机制特点:

1、事件源:就是awt或者swing包中的那些图形界面组件。
2、组件
3、监听器:将可以出发某一事件的动作(不止一个)都已经封装到了监听器中。
4、事件处理


事件:每一个事件源都有自己特有的对应事件和共性事件

addWindowListener(WindowListener wl);
addActionListener(ActionListener al);




setPreferredSize用于布局管理器。

在使用布局管理器的时候,可以不使用setSize(),因为布局管理器会自动调用组件的setSize方法设置组件的大小。即使用户调用setSize方法设置组件大小,最终可能被覆盖。参照下面的布局管理器了解被覆盖的过程。


绘制图形小程序

/*
 * 新建一个窗体Frame 
 * 新建两个按钮,添加进窗体,使用默认的边界布局
 * 为按钮添加监听机制,通过按钮设置shape变量,并调用画布的repaint方法
 * 新建一个画布类继承Canvas,重写paint方法,根据不同的shape值,使用方法在画布绘制图形
 * 将画布添加进窗体默认中间布局
 */
public class SimpleDraw
{
	private final String RECT_SHAPE = "rect";
	private final String OVAL_SHAPE = "oval";
	private Frame f = new Frame("简单绘图");
	private Button rect = new Button("绘制矩形");
	private Button oval = new Button("绘制圆形");
	private MyCanvas drawArea = new MyCanvas();
	// 用于保存需要绘制什么图形的变量
	private String shape = "";
	public void init()
	{
		Panel p = new Panel();
		rect.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				// 设置shape变量为RECT_SHAPE
				shape = RECT_SHAPE;
				// 重画MyCanvas对象,即调用它的update方法
				drawArea.repaint();
			}
		});
		oval.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				// 设置shape变量为OVAL_SHAPE
				shape = OVAL_SHAPE;
				// 重画MyCanvas对象,即调用它的update方法
				drawArea.repaint();
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent arg0) {
				System.exit(1);
			}			
		});
		p.add(rect);
		p.add(oval);
		drawArea.setPreferredSize(new Dimension(250 , 180));//设置大小
		f.add(drawArea);
		f.add(p , BorderLayout.NORTH);
		f.pack();
		f.setVisible(true);
	}
	public static void main(String[] args) 
	{
		new SimpleDraw().init();
	}
	class MyCanvas extends Canvas
	{
		// 重写Canvas的paint方法,实现绘画
		public void paint(Graphics g)
		{
			Random rand = new Random();
			if (shape.equals(RECT_SHAPE))
			{
				// 设置画笔颜色
				g.setColor(new Color(220, 100, 80));
				// 随机地绘制一个矩形框
				g.drawRect( rand.nextInt(200) //---随机数介于0~200之间,不包括200
					, rand.nextInt(120) , 40 , 60);
			}
			if (shape.equals(OVAL_SHAPE))
			{
				// 设置画笔颜色
				g.setColor(new Color(80, 100, 200));
				// 随机地填充一个实心圆形
				g.fillOval( rand.nextInt(200) 
					, rand.nextInt(120) , 40 , 40);
			}
		}
	}
}

-------  android培训、 java培训、期待与您交流! ----------

你可能感兴趣的:(JavaSE基础:GUI)