JAVA笔记【20131215】

图形程序设计

一、创建框架

Java中顶层窗口叫做框架(Frame)。JFrame是极少数几个不绘制在画布上的Swing组件之一,它的修饰部件由用户的窗口系统绘制。而不是由Swing绘制。

import javax.swing.*;
import java.awt.*;
import java.util.Locale;
public class SimpleFrameTest
{
	public static void main(String[] args)
	{
		SimpleFrame sp = new SimpleFrame();
		Toolkit tkt = Toolkit.getDefaultToolkit();
		Image img = tkt.getImage("2b.jpg");
		sp.setIconImage(img); //设置框架图标
		sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作
		sp.setAlwaysOnTop(true); //设置窗口始终位于其他窗口上方
		//sp.show();    //已过时显示窗口方法
		sp.setBackground(Color.BLUE);
		sp.setForeground(Color.CYAN);
		sp.setLocale(Locale.CHINA); //设置组件语言环境
		sp.setLocation(295,192); //将组件移到新位置
		sp.setVisible(true);  //显示组件
		sp.setTitle("SimpleWindow"); //标题栏
		
		JOptionPane.showMessageDialog(sp,"Quit Programe?");
		sp.setSize(sp.getMaximumSize()); //最大组件大小
		JOptionPane.showMessageDialog(sp,"Quit Programe?");
		sp.setSize(sp.getMinimumSize()); //最小组件大小
		JOptionPane.showMessageDialog(sp,"Quit Programe?");
		sp.setBounds(0,0,300,200); //设置组件显示位置和大小
		JOptionPane.showMessageDialog(sp,"Quit Programe?");
		sp.dispose();  //关闭窗口,并回收创建窗口所使用的全部资源
	}
}

class SimpleFrame extends JFrame
{
	public SimpleFrame()
	{
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度
		setResizable(false);  //设置组件大小是否可调节
	}
	public static final int DEFAULT_WIDTH = 600;
	public static final int DEFAULT_HEIGHT = 300;
}


二、在面板中显示信息。

JPanel类的paintComponent方法。

class MyPanel extends JPanel
{
	public void paintComponent(Graphics g)
	{
		//..................
	}
}

不管何种原因,只要窗口需要重新绘图,事件处理器就会通知组件,从而引发所有组件的paintComponent方法。一定不要自己调用paintComponent方法。

import javax.swing.*;
import java.awt.*;
public class SimpleFrameTest01
{
	public static void main(String[] args)
	{
		SimpleFrame sp = new SimpleFrame();
		sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作
		//sp.show();    //已过时显示窗口方法
		sp.setVisible(true);  //显示组件
		sp.setTitle("SimpleWindow"); //标题栏
	}
}

class SimpleFrame extends JFrame
{
	public SimpleFrame()
	{
		MyPanel mp = new MyPanel();
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度
		setResizable(false);  //设置组件大小是否可调节
		add(mp);
	}
	public static final int DEFAULT_WIDTH = 600;
	public static final int DEFAULT_HEIGHT = 300;
}

class MyPanel extends JPanel
{
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawString("FirstGraph",StringX,StringY);
	}
	
	public static final int StringX=255;
	public static final int StringY=150;
}

三、2D图形

Graphics类的子类Graphics2D类有更强大的绘图功能。

paintComponent方法会自动获得一个Graphics2D类对象,只要进行一次类型转换即可。

public void paintComponent(Graphics g)
{
	Graphics2D gps2D = (Graphics2D)g; 
	//..............................
}

Graphics和Graphics2D均抽象类,是不可实例化的,此处g的类型是sun.java2d.SunGraphics2D的,是由虚拟机传过来的。

import javax.swing.*;
import java.awt.*;
public class SimpleFrameTest02
{
	public static void main(String[] args)
	{
		SimpleFrame sp = new SimpleFrame();
		sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作
		//sp.show();    //已过时显示窗口方法
		sp.setVisible(true);  //显示组件
		sp.setTitle("SimpleWindow"); //标题栏
	}
}

class SimpleFrame extends JFrame
{
	public SimpleFrame()
	{
		MyPanel mp = new MyPanel();
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度
		setResizable(false);  //设置组件大小是否可调节
		add(mp);
	}
	public static final int DEFAULT_WIDTH = 600;
	public static final int DEFAULT_HEIGHT = 300;
}

class MyPanel extends JPanel
{
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawString("FirstGraph",StringX,StringY);
		System.out.println(g.getClass().getName());
		Graphics2D gps2D = (Graphics2D)g ;
		gps2D.draw3DRect(255,150,50,60,true); 
	}
	
	public static final int StringX=255;
	public static final int StringY=150;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值