栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象之窗口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象之窗口

游戏的窗口

(1)Java中表示窗体的类:Jframe

 自定义窗体的步骤:

        1.写一个类,继承Jframe(目的:让我们写的类也变成窗体,有了窗体的特点和行为);

        2.写一个构造方法,确定窗体的特点。

构造器:

        设置标题  setTitle(" ")  ;

        设置大小(尺寸) setSize(宽度,高度) ;

        设置位置  setLocation(横坐标,纵坐标);

        设置相对位置居中  setLocationRelativeTo(null);

        设置不允许改变界面大小setResizable(false);

        设置默认关闭的选项setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);

主函数:

        1.创建窗体;

        2.创建游戏面板;

        3.将面板加入到窗体中

        4.设置显示窗体

frame.setVisible(true);//true        表示显示        false        表示隐藏

(2)游戏面板

        游戏界面:Java中常用的面板类(JPanel)。

构造器:

画图专用方法:

代码如下:

Gameframe类:

package test;

import javax.swing.*;


public class Gameframe extends Jframe {
    
    public Gameframe(){
        //设置标题
        //setTitle
        // 调用从Jframe中继承过来的方法
        setTitle("标题");
        //设置大小(尺寸)
        //setSize(宽度,高度)  单位:像素
        setSize(512,768);
        //设置位置
        // setLocation(横坐标,纵坐标)
        //设置位置相对居中
        setLocationRelativeTo(null);
        //设置不允许改变界面大小
        setResizable(false);

        //设置默认关闭的选项
        //关闭窗体的时候结束程序
        //做任何游戏,下面代码必须得加
        setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);

    }

    
    public Gameframe(String title){
        this();
        setTitle(title);
    }

    public Gameframe(String title,int width,int height){
        setTitle(title);
        setSize(width,height);
    }

    
    public static void main(String[] args) {
        //创建窗体
//        Gameframe frame = new Gameframe();
        //创建指定标题的游戏窗体
        Gameframe frame = new Gameframe("澳门皇冠赌场");

        //创建游戏面板
        GamePanel panel = new GamePanel();

        //将面板加入到窗体中
        frame.add(panel);

        //设置显示窗体
        //frame.setVisible() true 表示显示  false 表示隐藏
        //此行代码,最好放在 设置好面板之后
        frame.setVisible(true);
    }
}

GamePanel类:

package test;

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


public class GamePanel extends JPanel {

    public GamePanel(){
        //设置背景
        //color 是Java中表示颜色的类
        setBackground(Color.black);
    }

    
    public void paint(Graphics g) {
        super.paint(g);//这行代码不要删,并且放在第一行
        //设置画笔的颜色
        g.setColor(Color.red);
        //设置字体
        //new Font("字体",字体样式,字体的大小)
        //Font.BOLD 文字加粗  Font.PLAIN(默认普通字体)    Font.ITALIC 斜体
        //g.setFont(new Font("楷体",Font.BOLD,30))
        g.setFont(new Font("楷体",Font.BOLD,30));
        //画文字
        //g.drawString("文字内容",横坐标x,纵坐标y)
        g.drawString("攀哥最帅",100,200);
        g.setColor(Color.green);
        g.setFont(new Font("楷体",Font.BOLD,50));
        g.drawString("不接受反驳",100,400);

        //画图形
        //画空心矩形
        //g.drawRect(x,y,width,height)
        g.drawRect(10,20,100,100);

        //画实心矩形
        //g.fillRect(x,y,width,height)
        g.fillRect(150,10,100,100);

        //画空心圆
        //g.drawOval(x,y,width,height)
        g.drawOval(10,150,200,100);

        // 画实心圆
        // g.fillOval(x,y,width,height)
        g.fillOval(150,150,100,100);

        //画圆弧
        //g.drawArc(横坐标,纵坐标,宽度,高度,起始弧度,终止弧度);
        g.drawArc(10,300,100,100,0,-180);

        //画扇形
        //g.drawLine(起点横坐标,起点纵坐标,终点横坐标,终点纵坐标)
        g.drawLine(20,20,500,20);

        //画直线
        //g.drawLine(起点的横坐标,纵坐标,终点的横坐标,纵坐标)
        g.drawLine(20,20,500,500);

        //修改线条的粗细
        // 1.将画笔转换成2d画笔
        Graphics2D g2d = (Graphics2D) g;
        // 2.设置线条的粗细
        g2d.setStroke(new BasicStroke(10));
        // 3.画完之后,一定要把粗细改回初始状态
        g2d.setStroke(new BasicStroke(1));
        g.drawLine(20,60,500,60);

        g.setFont(new Font("楷体",Font.BOLD,100));



        //画五角星
        g.drawString("★",300,600);

        //旋转坐标系
        // 1.将画笔转换成2d画笔
//        Graphics2D g2d = (Graphics2D) g;
        // 2.设置旋转坐标系,设置旋转角度,以及哪个位置为原点旋转
        g2d.rotate(0.4);
        g.drawString("★",300,600);
        // 3.画完之后,记得角度旋转回来
        g2d.rotate(-0.4);

        
    }
}

运行结果:

经典案例: 

(1)画国旗

①五星红旗

Chinaframe类:

package homework1114;

import day1114.Gameframe;
import day1114.GamePanel;

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

public class Chinaframe extends Jframe {
    //无参构造方法
    public Chinaframe(){
        //设置标题  setTitle
        setTitle("五星红旗");
        //设置大小(尺寸)  setSize(宽度,高度)  单位:像素
        setSize(1200,800);
        //设置位置相对居中
        setLocationRelativeTo(null);
        //设置不允许改变界面大小
        setResizable(false);
        //设置默认关闭的选项
        setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
    }

    // 程序入口
    public static void main(String[] args) {
        //创建窗体
        Chinaframe frame = new Chinaframe();
        //创建游戏面板
        ChinaPanel panel = new ChinaPanel();
        //将面板加入到窗体中
        frame.add(panel);
        //设置显示窗体
        frame.setVisible(true);
    }
}

JPanel类:

package homework1114;

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

public class ChinaPanel extends JPanel {
    public ChinaPanel(){
        //设置背景
        //color 是Java中表示颜色的类
        setBackground(Color.red);
    }

    
    public void paint(Graphics g) {
        super.paint(g);

        //画五角星
        g.setColor(Color.yellow);
        // 大小
        g.setFont(new Font("楷体",Font.BOLD,200));
        // 大五角星
        g.drawString("★",50,240);
        g.setFont(new Font("楷体",Font.BOLD,80));

        // 1. 将画笔转换城2d画笔
        Graphics2D g2d = (Graphics2D)g;
        // 2. 旋转坐标系,设置旋转角度,以及哪个位置为原点旋转
        g2d.rotate(0.4); // Math.sin() cos()
        // 第一个小五角星
        g.drawString("★",240,-30);
        // 3. 画完之后,记得角度旋转回来
        g2d.rotate(-0.4);

        // 2. 旋转坐标系,设置旋转角度,以及哪个位置为原点旋转
        g2d.rotate(0.8); // Math.sin() cos()
        // 第二个小五角星
        g.drawString("★",305,-150);
        // 3. 画完之后,记得角度旋转回来
        g2d.rotate(-0.8);

        // 第三个小五角星
        g.drawString("★",320,260);

        // 2. 旋转坐标系,设置旋转角度,以及哪个位置为原点旋转
        g2d.rotate(0.4); // Math.sin() cos()
        // 第四个小五角星
        g.drawString("★",350,200);
        // 3. 画完之后,记得角度旋转回来
        g2d.rotate(-0.4);
    }
}

运行结果:

②美国国旗

USframe类:

package homework11141;

import homework1114.Chinaframe;
import homework1114.ChinaPanel;

import javax.swing.*;

public class USframe extends Jframe {
    //无参构造方法
    public USframe(){
        //设置标题  setTitle
        setTitle("美国国旗");
        //设置大小(尺寸)  setSize(宽度,高度)  单位:像素
        setSize(1900,1014);
        //设置位置相对居中
        setLocationRelativeTo(null);
        //设置不允许改变界面大小
        setResizable(false);
        //设置默认关闭的选项
        setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
    }

    // 程序入口
    public static void main(String[] args) {
        //创建窗体
        USframe frame = new USframe();
        //创建游戏面板
        USFPanel panel = new USFPanel();
        //将面板加入到窗体中
        frame.add(panel);
        //设置显示窗体
        frame.setVisible(true);
    }
}

USFPanel类:

package homework11141;

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

public class USFPanel extends JPanel {
    public USFPanel(){
        //设置背景
        //color 是Java中表示颜色的类
        setBackground(Color.white);
    }

    
    public void paint(Graphics g) {
        super.paint(g);

        g.setColor(Color.red);
        //修改线条的粗细
        // 1.将画笔转换成2d画笔
        Graphics2D g2d = (Graphics2D) g;
        // 2.设置线条的粗细
        g2d.setStroke(new BasicStroke(78));
        //画直线
        //g.drawLine(起点的横坐标,纵坐标,终点的横坐标,纵坐标)
        g.drawLine(0,39,1900,39);
        g.drawLine(0,193,1900,193);
        g.drawLine(0,347,1900,347);
        g.drawLine(0,501,1900,501);
        g.drawLine(0,655,1900,655);
        g.drawLine(0,809,1900,809);
        g.drawLine(0,963,1900,963);
        // 3.画完之后,一定要把粗细改回初始状态
        g2d.setStroke(new BasicStroke(1));

        g.setColor(Color.blue);
        // 2.设置线条的粗细
        g2d.setStroke(new BasicStroke(546));
        //画直线
        //g.drawLine(起点的横坐标,纵坐标,终点的横坐标,纵坐标)
        g.drawLine(0,268,732,268);
        // 3.画完之后,一定要把粗细改回初始状态
        g2d.setStroke(new BasicStroke(1));

        //画五角星
        g.setColor(Color.white);
        // 大小
        g.setFont(new Font("楷体",Font.BOLD,60));
        // 五角星
        for(int i=0 ; i<5 ; i++){// 行数
            // 列数
            for(int j=0 ; j<6 ; j++){
                g.drawString("★",25+175*j,60+110*i);
            }
        }
        for(int i=0 ; i<4 ; i++){// 行数
            // 列数
            for(int j =0 ; j<5 ; j++){
                g.drawString("★",110+175*j,110+110*i);
            }
        }

    }
}

运行结果:

 ③哆啦A梦

Blueframe类:

package homework11142;

import homework11141.USFPanel;
import homework11141.USframe;

import javax.swing.*;

public class Blueframe extends Jframe {
    //无参构造方法
    public Blueframe(){
        //设置标题  setTitle
        setTitle("哆啦A梦");
        //设置大小(尺寸)  setSize(宽度,高度)  单位:像素
        setSize(1000,1000);
        //设置位置相对居中
        setLocationRelativeTo(null);
        //设置不允许改变界面大小
        setResizable(false);
        //设置默认关闭的选项
        setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
    }

    // 程序入口
    public static void main(String[] args) {
        //创建窗体
        Blueframe frame = new Blueframe();
        //创建游戏面板
        BluePanel panel = new BluePanel();
        //将面板加入到窗体中
        frame.add(panel);
        //设置显示窗体
        frame.setVisible(true);
    }
}

BluePanel类:

package homework11142;

import org.w3c.dom.css.RGBColor;

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

public class BluePanel extends JPanel {
    public BluePanel(){
        //设置背景
        //color 是Java中表示颜色的类
        setBackground(new Color(29,140,219));
    }

    
    public void paint(Graphics g) {
        super.paint(g);

        //修改线条的粗细
        // 1.将画笔转换成2d画笔
        Graphics2D g2d = (Graphics2D) g;
        // 2.设置线条的粗细
        //轮廓
        g2d.setStroke(new BasicStroke(10));
        g.fillOval(200,50,610,610);
        g.setColor(new Color(0,43,127));
        g.fillOval(215,60,580,590);
        g.setColor(Color.black);
        g.fillOval(255,165,500,500);
        g.setColor(Color.white);
        g.fillOval(270,180,470,480);

        //画空心圆
        //g.drawOval(x,y,width,height)
        //眼睛rgb:0,43,127
        g.setColor(Color.black);
        g.drawOval(395,100,100,200);
        g.setColor(Color.white);
        g.fillOval(400,105,90,190);
        g.setColor(Color.black);
        g.drawOval(505,100,100,200);
        g.setColor(Color.white);
        g.fillOval(510,105,90,190);
        g.setColor(Color.black);
        g2d.setStroke(new BasicStroke(20));
        g.drawOval(435,180,40,60);
        g.drawOval(530,180,40,60);

        //鼻子
        g2d.setStroke(new BasicStroke(10));
        g.fillOval(460,290,100,60);
        g.setColor(Color.red);
        g.fillOval(470,300,80,40);
        g.setColor(Color.black);
        g.drawLine(510,350,510,550);

        //胡须
        g.drawLine(300,365,450,400);
        g.drawLine(300,430,440,440);
        g.drawLine(330,510,440,460);

        g.drawLine(550,380,680,320);
        g.drawLine(540,440,700,440);
        g.drawLine(540,480,690,520);

        //画圆弧
        //g.drawArc(横坐标,纵坐标,宽度,高度,起始弧度,终止弧度);
        g.drawArc(350,400,300,150,0,-180);

        // 3.画完之后,一定要把粗细改回初始状态
        g2d.setStroke(new BasicStroke(1));

        // 2.设置线条的粗细
        g2d.setStroke(new BasicStroke(10));

        //画直线
        //g.drawLine(起点的横坐标,纵坐标,终点的横坐标,纵坐标)
        g.setColor(Color.black);
        g.drawLine(320,600,680,600);
        g.setColor(Color.red);
        g2d.setStroke(new BasicStroke(60));
        g.drawLine(345,635,655,635);
        g.setColor(Color.black);
        g2d.setStroke(new BasicStroke(10));
        g.drawLine(320,600,320,670);
        g.drawLine(680,600,680,670);
        g.drawLine(320,670,680,670);
        g.fillOval(450,670,100,100);
        g.setColor(Color.yellow);
        g.fillOval(460,680,80,80);
        g.setColor(Color.black);
        g.drawLine(455,720,545,720);
        g.drawLine(500,720,500,760);
        // 3.画完之后,一定要把粗细改回初始状态
        g2d.setStroke(new BasicStroke(1));
    }
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572570.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号