第三个java程序(表白小卡片) - Go语言中文社区

第三个java程序(表白小卡片)


前言:

 向女神表白啦,作为一个程序员,当然也有爱情啦只不过,虽然前面两个程序都只是学习了基础的语法结构和向量哈希表。这里涉及的是Swing,awt图形用户界面和一点文件输入输出流的知识。
  表白代码如下:

另附:里面的音乐和图片可以放在一个自己创建的包里面,也可以放在src里面,或者使用绝对路径。至于布局,我自己的使用的是简单的排版,简单的继承。后面的程序会慢慢实现。
老规矩:创建项目,包,类。

import java.awt.*;//导入java.awt包中的类
import java.io.*;//导入java.io输入输出流类
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.util.Date;

import javax.sound.sampled.*;//导入javax.sound.sampled包中的音频类
import java.awt.event.*;//导入java.awt.event包中定义的事件类
import javax.swing.*;//导入java.swing包中的类
import java.io.*;
import javax.sound.sampled.*;
public class three{//主类
	public static void main(String[] args) {//主方法
		MainWnd w = new MainWnd();//创建并显示主窗口对象
		w.repaint();//调用窗口的重绘方法
		try {//播放过程中可能会抛出勾选异常
			//为音频文件建立起音频输入流
			File f = new File("src/东京.wav");//音频文件
			AudioInputStream ais = AudioSystem.getAudioInputStream(f);
			//System.out.println(ais.getFormat());//获取音频格式
			Clip c = AudioSystem.getClip();//获取播放音频的片段对象
			c.open(ais);//在片段对象中打开音频输入流ais
			c.setFramePosition(0);//设置播放起始位置
			//System.out.println("Start");
			c.start();//开始播放音频
			Thread.sleep(100000);//休眠等待100秒,否则音频播放完程序就结束了
			c.close();//关闭片段对象
			//System.out.println("Close");
		}
		catch(Exception e) {System.out.println(e.getMessage());}
	}
}

class MainWnd extends JFrame{//定义主窗口类:继承并扩展窗口类JFrame
	public MainWnd() {//构造方法完成初始窗口化的功能
		String []s = {null,"me","you"};
		ImageIcon[]ic= {null,new ImageIcon("src\img1.gif"),
				new ImageIcon("src\img2.gif")};
	int []ih = {0,JLabel.LEFT,JLabel.CENTER};
	int []iv = {0,JLabel.CENTER,JLabel.BOTTOM};
	Container c = getContentPane();
	c.setLayout(new FlowLayout(FlowLayout.RIGHT));
	for(int i=0;i<3;i++)
	{
		JLabel aLabel = new JLabel(s[i],ic[i],JLabel.LEFT);
		if(i>0)
		{
			aLabel.setHorizontalTextPosition(ih[i]);
			aLabel.setVerticalTextPosition(iv[i]);
		}
		c.add(aLabel);
	}
		setSize(460,300);//设置窗口尺寸
		setLocation(100,100);//设置窗口位置
		setVisible(true);//设置窗口时显示或隐示
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
	}
	
	public void paint(Graphics g) {//重写绘图方法paint()
		super.paint(g);//调用超类的paint()方法
		Font ef = new Font("TimesRoman",Font.PLAIN,24);//创建字体对象
		g.setFont(ef);//设置字体
		g.setColor(Color.PINK);//设置绘图颜色
		g.drawString("I Love you", 20, 80);//显示英文信息
		Font cf = new Font("楷体",Font.PLAIN,24);//选择字体
		g.setFont(cf);//设置字体
		g.drawString("为你写一首歌", 20, 120);//显示中文信息
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    LocalDate today = LocalDate.now();
	    LocalDate oldDate = LocalDate.of(2015, 12,23); 
	    Period p = Period.between(oldDate, today);
	    String n1 =Integer.toString(p.getYears()) ;
	    String n2 = Integer.toString(p.getMonths());
	    String n3 = Integer.toString(p.getDays());
	    Font kf = new Font("TimesRoman",Font.PLAIN,22);//创建字体对象
		g.setFont(kf);//设置字体
		g.setColor(Color.PINK);//设置绘图颜色
		g.drawString("                    -I&Y一起"+n1+"年"+n2+"月"+n3+"天", 20, 80);
		g.setColor(Color.PINK);//设置填充颜色
		g.fillRect(20, 150, 100,100);//画一个实心矩阵
		g.setColor(Color.RED);//设置绘图颜色
		g.drawRect(20, 150, 100,100);//画一个矩形框,此处是为上面的实心矩形加框
		
	}
}

打开时显示此画面,后台播放音乐。图片和音乐都可以切换,这里的矩阵用draw方法绘画的,都可以更改,时间是当前时间与一个特定时间的差值,也可以改变。

后记:

打开时显示此画面,后台播放音乐。图片和音乐都可以切换,这里的矩阵用draw方法绘画的,都可以更改,时间是当前时间与一个特定时间的差值,也可以改变。
  冲鸭,第四个实验要来了哦。这个有不理解的或者有大神有更好的结构的私戳我哦,谢谢。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43919400/article/details/103152825
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢