社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
向女神表白啦,作为一个程序员,当然也有爱情啦。只不过,虽然前面两个程序都只是学习了基础的语法结构和向量哈希表。这里涉及的是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方法绘画的,都可以更改,时间是当前时间与一个特定时间的差值,也可以改变。
冲鸭,第四个实验要来了哦。这个有不理解的或者有大神有更好的结构的私戳我哦,谢谢。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!