java - 图形程序设计

一、创建框架

框架(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);
    }
}

时间: 2024-08-13 01:57:17

java - 图形程序设计的相关文章

201671010145 2016-2017《Java程序设计》JAVA图形程序设计基本框架

在Java 1.0 刚刚出现的时候,包含了一个用于基本GUI程序设计的类库,Sun将它称为抽象窗口工具箱(Abstract Window Toolkit, AWT). 1996年,Netscape创建了一种称为IFC(Internet Foundation Class)的GUI库.Sun与Netscape合作完善了这种方式,创建了一个名为Swing的用户界面库. Swing没有完全替代AWT,而是基于AWT架构之上.Swing仅仅提供了能力更加强大的用户界面组件.尤其在采用Swing编写的程序中

《Java语言程序设计》大作业报告 九宫格游戏

    <Java语言程序设计>大作业报告     中国石油大学(北京)2015 - 2016 学年第二学期     班级:_____计算机14-1_______ 姓名:_____  许 恺_________________ 学号:______2014011329___________     题意分析 程序首先需要九个可以移动的格子,大小相等,有字符串标示,其次要可以相应鼠标和键盘方向键的控制,可以自由移动,并且与此同时记录步数,最后在满足条件时弹出对话框并显示步数以及是否打破记录,关于打破

java图形用户界面认知

为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置.组件类是创建用户界面的,例如,JButton,JLabel和JTextField.容器类是用来包含其他组件的,例如,JFrame,JPanel和JApplet.辅助类是用来支持GUI组件的,例如,Graphics,Color,Font,FontMetrics和Dimension. 一.组件类 Component 类的实例可以显示在屏幕上.Componen

Java语言程序设计期中考试试题

Java语言程序设计期中考试试题 一.编程题 1. 抽象类 创建闭合图形抽象类(ClosedFigure),定义抽象方法计算面积:创建继承平面图形抽象类的两个子类椭圆(Ellipse)和矩形(Rectangle),在子类中实现计算图形面积的方法.设计测试类Test1进行相应的测试,根据不同类型的平面图形进行相应的面积计算.(30分) 提示:根据椭圆第一定义,用a表示椭圆长半轴的长,b表示椭圆短半轴的长,且a>b>0, 椭圆面积公式:L=πab 2.接口 创建接口Speakable和Runer,

201671010111 2016-2017-2《面向对象的程序设计》 图形程序设计

本周为第十一周,java的学习到了第十章的<图形程序设计>. 本周的理论课老师做了一个小检测,是对前四章知识点的复习与回顾.第一个小时的做题,第二个小时则交换答题纸进行批阅.老师是对所有的试题进行讲解.给人整体的感觉是前四章的学习也是极为认真的,但是在做题的时候显然还是有很多困难,有些答案还是有模棱两可的感觉.可能也是没有进行系统的复习的原因吧,老师也说了是通过测试的方式来督促同学们去复习前面的知识点. 由于时间有限的原因,测试题的最后一道编程题就流到了实验课上,老师带着所有同学一起编写了代码

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

Java语言程序设计 上机实验5 异常

Java语言程序设计 上机实验5 实验目的: 理解异常的概念,掌握Java的异常处理机制.常见异常的捕获方法.自定义异常及其抛出和捕获方法. 实验内容: 常见异常的捕获: 编写一个程序,分别生成ArrayIndexOutOfBoundsException类型和NumberFormatException类型的异常:然后改写程序,对这两种类型的异常进行捕获并合理地处理. 另外,思考并回答问题:能否0同时抛出ArrayIndexOutOfBoundsException类型和NumberFormatEx

Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法

Java语言程序设计 上机实验4 实验目的: 理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口.一个类实现接口的声明和使用方法:熟悉Java语言包和实用包中的常用类. 实验内容:(*)为选做 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积. 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断

第一部分:Java基础程序设计

Java(a)--Java 基础程序设计 Java 语言介绍(认识JAVA) JVM(Java虚拟机):JVM是可运行java代码的假想计算机,其保证了java可以进行跨平台地运行,亦即其可移植性,也符合sun公司提出的口号:Write Once, Run Anywhere.(一次编写,处处运行) 运行示意图如下:(由于图片无法加载,因此暂时不上传) Java技术的架构包括三个方面: J2EE(Java 2 Platform Enterprise Edition)企业版,是以企业为环境而开发应用