码迷,mamicode.com
首页 > 编程语言 > 详细

java - 图形程序设计

时间:2016-11-05 14:40:29      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:ovf   屏幕   bsh   pac   cas   pcr   exit   pga   class   

 

一、创建框架

框架(frame),没有包含其他窗口的窗口

swing 基于 awt, 创建框架第一步,需要导入swing 与 awt 的包

 

import java.awt.*;
import javax.swing.*;     //swing 在java的扩展包中

/**
 * 文件名:SimpleFrameTest.java
* 功能:了解框架搭建部署
* 步骤:
* 1. 定义子类SimpleFrame,构造器中大小设置为300 * 200 象素
* 2. 在SimpleFrameTest中的main方法中创建一个SimpleFrame对象frame
* 3. 定义用户关闭这个框架时的响应动作,默认是隐藏,不是关闭
* 4. 显示框架,默认不显示
*/ public class SimpleFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class SimpleFrame extends JFrame { private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 200; public SimpleFrame() { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); } }

 

 

 

二、框架大小

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

/**
 *  文件名: SizedFrameTest.java
 *  功能:增加框架属性,添加标题
*
*
*/ public class SizedFrameTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new SizedFrame(); frame.setTitle("SizedFrame");    //设置框架标题名称 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class SizedFrame extends JFrame { public SizedFrame() {
    //得到框架大小
    //步骤:
    // 1. 调用Toolkit类的静态方法getDefaultTookit得到一个Tookit对象
    // 2. 这个方法以Dimension方式返回屏幕尺寸
    // 3. Dimension 同时用公有变量width 与 hight 保存屏幕宽度与高度
Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenHeight = screenSize.height; int screenWidth = screenSize.width; // 使用框架属性中设置大小将屏幕设置为一半
    // 让系统定位框架 setSize(screenWidth / 2, screenHeight / 2); setLocationByPlatform(true); // 设置框架图标     Image img = new ImageIcon("icon.gif").getImage(); setIconImage(img); } }

 

 

 

三、在组件中显示信息

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

/**
 * 文件名:NotHelloWorld
 * 功能:在组件中显示信息
 * 步骤:
 *   1. 
 */
public class NotHelloWorld
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
         {
            public void run()
            {
               JFrame frame = new NotHelloWorldFrame();
               frame.setTitle("NotHelloWorld");
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
   }
}

/**
 *  构造函数中创建一个新的面板,且加入到框架中
 */
class NotHelloWorldFrame extends JFrame
{
   public NotHelloWorldFrame()
   {
      add(new NotHelloWorldComponent());
      pack();
   }
}

/**
 *  Graphics 画笔继承自JCompoent, 也可继承自JPanel
 */
class NotHelloWorldComponent extends JComponent
{
   public static final int MESSAGE_X = 75;
   public static final int MESSAGE_Y = 100;

   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 200;

   public void paintComponent(Graphics g)
   {
      g.drawString("Not a Hello, World program", MESSAGE_X, MESSAGE_Y);
   }
   
   public Dimension getPreferredSize() 
    { 
        return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); 
    }
}
    

 

 

 

四、使用画笔画一个坦克

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

/**
 *  功能: 画出坦克
 *  步骤
 *    1. 创建坦克类Tank
 *    2. 创建我的坦克类Hero 继承 Tank
 *    3. 创建我的面板MyPanel 继承 JPanel
 *    4. 在TankGame1类中增加MyPanel
 *    
 */


public class TankGame1 extends JFrame
{
        //创建一个面板对象mp
    MyPanel mp = null;        
    
    public static void main(String[] args)
    {
        TankGame1 mtg = new TankGame1();
    
    }
    
    //构造函数
    public TankGame1()
    {
        mp = new MyPanel();
        this.add(mp);                //增加进面板中
        this.setSize(400, 300);  // 大小
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);     //显示
    }
    
}

//我的面板
class MyPanel extends JPanel
{
    //定义一个我的坦克
    Hero hero = null;
    
    //构造函数
    public MyPanel()
    {
        hero = new Hero(100,100);
    }
    
    //重新paint
    public void paint(Graphics g)
    {
        super.paint(g);
        
        //定下活动区域
        g.fillRect(0, 0, 400, 300);
        
                //调用函数drawTank画出我的坦克
        this.drawTank(hero.getX(), hero.getY(), g, 0, 1);
        
    }
    
    //画出坦克的函数
    public void drawTank(int x, int y, Graphics g, int direct, int type)
    {
        
        //判断是什么类型的坦克
        switch(type)
        {
        case 0:
            g.setColor(Color.cyan);
            break;
        case 1:
            g.setColor(Color.yellow);
        }
        
        //判断方向
        switch(direct)
        {
        //向上
        case 0:
            //画出我的坦克
            //1.画出左边的矩形
            g.fill3DRect(x, y, 5, 30,false);
            
            //2. 现出右边的矩形
            g.fill3DRect(x+15, y, 5, 30,false);
            
            //3. 画出中间矩形
            g.fill3DRect(x+5, y+5, 10, 20,false);
            
            //4. 画出圆形
            g.fillOval(x+5, y+10, 10, 10);
            
            //5. 画出线
            g.drawLine(x+10, y+15, x+10, y);
            
        }
    }
}



//坦克类
class Tank
{
    int x = 0;        //表示坦克的横坐标
    int y = 0;        //表示坦克的纵坐标
    
    Tank(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    
    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
    
}


//我的坦克
class Hero extends Tank
{
    public Hero(int x, int y)
    {
        super(x, y);
    }
}

 

 

技术分享

 

java - 图形程序设计

标签:ovf   屏幕   bsh   pac   cas   pcr   exit   pga   class   

原文地址:http://www.cnblogs.com/elewei/p/6032911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!