登录界面类
package picturePlayback;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class dengLu {
//创建窗口
JFrame jFrame= new JFrame();
JFrame jFrame1= new JFrame();
//创建面板
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
//创建文本框
JTextField f1 = new JTextField(12);
JTextField f2 = new JTextField(12);
//创建登录按钮
JButton b1 = new JButton("登录");
//账号密码
String a="123456";
String b="123456";
public void err(){
//设置窗口
jFrame1.setTitle("错误!");
jFrame1.setBounds(750,400,80,10);
//登录错误提示界面
Font font = new Font("宋体", Font.BOLD, 40);//设置字形,字体和字号
JLabel labName = new JLabel("账号或密码错误! ");// 用标签来表示文本或图片
labName.setFont(font);
//布局
FlowLayout flowLayout = new FlowLayout();
flowLayout.setAlignment(FlowLayout.CENTER);
jFrame1.setLayout(flowLayout);
jFrame1.add(labName);
jFrame1.pack();
jFrame1.setVisible(true);
}
public void init(){
//设置窗口
jFrame.setBounds(800,350,120,60);
jFrame.setTitle("登录");
//创建标题
JLabel jLabel = new JLabel("图片浏览器");
Font font1 = new Font("宋体", Font.BOLD, 50);//设置字形,字体和字号
Font font2 = new Font("宋体", Font.BOLD, 20);//设置字形,字体和字号
jLabel.setFont(font1);
p1.setBounds(260, 20, 300, 80);
p1.add(jLabel);
//账号
JLabel labName = new JLabel("账号 ");// 用标签来表示文本或图片
labName.setFont(font2);// 设置标签字体的大小
// JTextField f1 = new JTextField(12);
p2.add(labName);
p2.add(f1);
//密码
JLabel labPass = new JLabel("密码 ");// 用标签来表示文本或图片
labPass.setFont(font2);// 设置标签字体的大小
// JTextField f2 = new JTextField(12);
p3.add(labPass);
p3.add(f2);
p4.add(b1);
//组装
Box vbox= Box.createVerticalBox();
vbox.add(p2);
vbox.add(p3);
//布局
jFrame.add(p1,BorderLayout.NORTH);
jFrame.add(vbox);
jFrame.add(p4,BorderLayout.SOUTH);
jFrame.pack();
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);//关闭窗体时结束程序
//监听器
b1.addActionListener(actionListener);
}
//事件监听器
ActionListener actionListener = new ActionListener(){
public void actionPerformed(ActionEvent e) {
String s=f1.getText();
String s1=f2.getText();
if (s.equals(a)&&s1.equals(b)) {
jFrame.setVisible(false);
picturePlayback p =new picturePlayback();
p.init();
}
else {
//弹出错误界面
new dengLu().err();
//账号密码框清空
f1.setText("");
f2.setText("");
}
}
};
}
图片播放类
package picturePlayback;
import javax.swing.*;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class picturePlayback {
JFrame jFrame = new JFrame("图片浏览器");
int c=1;
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
//创建按钮
JButton b1 = new JButton("第一张");
JButton b2 = new JButton("最后一张");
JButton b3 = new JButton("下一张");
JButton b4 = new JButton("上一张");
CardLayout cardLayout = new CardLayout();
//创建事件监听器
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
musicPlay m = new musicPlay();
String s =e.getActionCommand();
switch (s){
case "第一张":
cardLayout.first(p1);
cardLayout.first(p3);
break;
case "最后一张":
cardLayout.last(p1);
cardLayout.last(p3);
break;
case "上一张":
cardLayout.previous(p1);
cardLayout.previous(p3);
break;
case "下一张":
cardLayout.next(p1);
cardLayout.next(p3);
break;
}
}
};
public void init(){
//设置窗口
jFrame.setBounds(350,150,1200,800);
jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);//关闭窗体时结束程序
//设置card布局
p1.setLayout(cardLayout);
p3.setLayout(cardLayout);
//加载图片到面板中
for (int i =1;i<=7;i++){
ImageIcon img = new ImageIcon("D:\myIDEA\picturePlayback\src\picture\bg"+i+".jpg");
JLabel labe1 = new JLabel(img,JLabel.CENTER);
p1.add(labe1);
}
//读取简介
for(int i =1;i<=7;i++){
try {
String fileName = "D:\myIDEA\picturePlayback\src\txt\bg"+i+".txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
JTextArea j1 = new JTextArea(br.readLine());
p3.add(j1);
}
catch (Exception e){
}
}
//添加到一个Jpanel上
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(b4);
//布局
BorderLayout borderLayout = new BorderLayout();
jFrame.add(p1,BorderLayout.CENTER);
jFrame.add(p2,BorderLayout.SOUTH);
jFrame.add(p3,BorderLayout.NORTH);
jFrame.setVisible(true);
//监听
b1.addActionListener(actionListener);
b2.addActionListener(actionListener);
b3.addActionListener(actionListener);
b4.addActionListener(actionListener);
}
}
背景音乐类
package picturePlayback;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;
public class musicPlay {
public void musicplay() {
try {
//1 获取你要播放的音乐文件
File file = new File("E:\music\music2.wav");
//2、定义一个AudioInputStream用于接收输入的音频数据
AudioInputStream am;
//3、使用AudioSystem来获取音频的音频输入流(处理(抛出)异常)
am = AudioSystem.getAudioInputStream(file);
//4、使用AudioFormat来获取AudioInputStream的格式
AudioFormat af = am.getFormat();
//5、一个源数据行
SourceDataLine sd;
//6、获取受数据行支持的音频格式DataLine.info
//DataLine.Info dl = new DataLine.Info(SourceDataLine.class, af);
//7、获取与上面类型相匹配的行 写到源数据行里 二选一
sd = AudioSystem.getSourceDataLine(af);//便捷写法
//sd = (SourceDataLine) AudioSystem.getLine(dl);
//8、打开具有指定格式的行,这样可以使行获得资源并进行操作
sd.open();
//9、允许某个数据行执行数据i/o
sd.start();
//10、写数据
int sumByteRead = 0; //读取的总字节数
byte[] b = new byte[320];//设置字节数组大小
//11、从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。
while (sumByteRead != -1) {//-1代表没有 不等于-1时就无限读取
sumByteRead = am.read(b, 0, b.length);//12、读取哪个数组
if (sumByteRead >= 0) {//13、读取了之后将数据写入混频器,开始播放
sd.write(b, 0, b.length);
}
}
//关闭
sd.drain();
sd.close();
} catch (Exception e) {
}
}
}
图片文件夹
简介文件
把文件图片简介统一命名,进行循环加载。



