首页 > 代码库 > java - 图形程序设计
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); }}
java - 图形程序设计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。