JAVA课程设计
. 资料. .. .
. . . .
一.设计背景
电子相册是现在时下很流行的一种网络元素,它可以应用于很多的领域。其以静态照片为素材,配合动感的背景、字幕等视频处理的特殊效果,配上音乐就可制作成电子相册。制作好的电子相册可以在电脑上,各类影碟机上,以及手机和MP4里都能观看。当然,如果考虑到长期保存的话,也可以保存在硬盘上,也便于随时调阅、欣赏,永久保存。
二.需求分析
1.采用的形式为:java application 2.需要实现的主要功能是: (1)不同用户的登录模块 (2)附加背景音乐。
三.概要设计
3.1功能说明
该程序可以实现用户登录、放大、缩小、上一、下一、播放照片等功能。
3.3 主要的工具包
该程序中用到如下几个工具包,为: import java.awt.Dimension; import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
. 资料. .. .
. . . .
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; import java.awt.*; import javax.swing.*; import java.io.*;
import java.awt.event.*;
import java.applet.AudioClip; import java.applet.Applet; import java.awt.Frame;
import java.net.MalformedURLException; import java.net.URI; import java.net.URL;。
四.系统功能模块结构
该电子相册程序分为登录相关模块、背景音乐播放模块、相册
相关模块这3个模块。
五.系统实现
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
. 资料. .. .
. . . .
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; import java.awt.*; import javax.swing.*; import java.io.*;
import java.awt.event.*; import java.applet.AudioClip; import java.applet.Applet; import java.awt.Frame;
import java.net.MalformedURLException; import java.net.URI; import java.net.URL;
import sun.net..content.audio.wav;
public class PictureExplorer extends JFrame implements ActionListener {
private JLabel imagelabel; private JPanel panel; private int i=0;String filename;
. 资料. .. .
. . . .
File file;
private ImageIcon image;
private JButton startbutton,stopbutton,previousbutton,nextbutton; private JMenuBar menubar; private JMenu menu;
private JMenuItem menuitemopen,menuitemexit;
private JFileChooser chooser;
File f; URI uri; URL url;
public PictureExplorer(){
try {
f = new File(\"/Users/kiminatosaku/Downloads/1.wav\"); uri = f.toURI(); url = uri.toURL(); //解析地址
AudioClip aau;
aau = Applet.newAudioClip(url); aau.loop(); //循环播放 } catch (Exception e) {
e.printStackTrace();
. 资料. .. .
. . . .
}
imagelabel=new JLabel(); panel=new JPanel(); image=new ImageIcon(); startbutton=new JButton(\"放大\"); stopbutton=new JButton(\"缩小\"); previousbutton=new JButton(\"上一\"); nextbutton=new JButton(\"下一\"); menubar=new JMenuBar(); menu=new JMenu(\"文件\");
menuitemopen=new JMenuItem(\"打开文件\"); menuitemexit=new JMenuItem(\"退出\"); chooser=new JFileChooser();
}
public void launchPictureExplorerTest(){ Container c=getContentPane(); startbutton.addActionListener(this); stopbutton.addActionListener(this); previousbutton.addActionListener(this); nextbutton.addActionListener(this); menuitemopen.addActionListener(this);
menuitemexit.addActionListener(this); . 资料. .. .
. . . .
menubar.add(menu); menu.add(menuitemopen); menu.add(menuitemexit); imagelabel.setIcon(image);
imagelabel.setHorizontalAlignment(SwingConstants.CENTER); c.add(imagelabel,\"Center\"); panel.add(previousbutton); panel.add(nextbutton); panel.add(startbutton); panel.add(stopbutton); c.add(panel,\"South\");
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setCurrentDirectory(new File(\".\")); //设置文件选择器当前
目录
chooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) { //可接受的文件类型 String name = file.getName().toLowerCase(); //获取文件名 return name.endsWith(\".gif\") || name.endsWith(\".jpg\") || name.endsWith(\".jpeg\") || file.isDirectory(); }
. 资料. .. .
. . . .
框
}
public String getDescription() { return \"图像文件\"; } });
setJMenuBar(menubar); setSize(800,600); setLocation(100,100); setTitle(filename);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true);
public void actionPerformed(ActionEvent e){
Object source=e.getSource(); if(source==menuitemopen){
int result = chooser.showOpenDialog(this); //显示文件选择对话
if (result == JFileChooser.APPROVE_OPTION) { String filename =
chooser.getSelectedFile().getAbsolutePath();
image=new ImageIcon(filename);
. 资料. .. .
. . . .
ImageIcon icon=new ImageIcon(); icon=image; double
widthratio=image.getIconWidth()*1.0/imagelabel.getWidth();
double
heightratio=image.getIconHeight()*1.0/imagelabel.getWidth();
if(widthratio<=1&&heightratio<=1){ }
int width=-1,height=-1; if(heightratio>=widthratio){ } else
height=imagelabel.getHeight(); imagelabel.setIcon(image);
{
}
image=new
width=imagelabel.getWidth();
ImageIcon(icon.getImage().getScaledInstance(width,height,Image.SCALE_SMOOTH));
imagelabel.setIcon(image);
. 资料. .. .
. . . .
}
}
else if(source==menuitemexit)
{ System.exit(1);
}
else if(source==previousbutton){ File[] files;
file=chooser.getSelectedFile().getParentFile(); files=file.listFiles(); if(i>0&&i image=new ImageIcon(filename); ImageIcon icon=new ImageIcon(); icon=image; double widthratio=image.getIconWidth()*1.0/imagelabel.getWidth(); double . 资料. .. . . . . . heightratio=image.getIconHeight()*1.0/imagelabel.getWidth(); if(widthratio<=1&&heightratio<=1){ } int width=-1,height=-1; imagelabel.setIcon(image); if(heightratio>=widthratio){ } else{ } image=new width=imagelabel.getWidth(); height=imagelabel.getHeight(); ImageIcon(icon.getImage().getScaledInstance(width,height,Image.SCALE_SMOOTH)); } imagelabel.setIcon(image); else if(source==nextbutton){ File[] files; file=chooser.getSelectedFile().getParentFile(); . 资料. .. . . . . . files=file.listFiles(); if(i>=0&&i image=new ImageIcon(filename); ImageIcon icon=new ImageIcon(); icon=image; double widthratio=image.getIconWidth()*1.0/imagelabel.getWidth(); double heightratio=image.getIconHeight()*1.0/imagelabel.getWidth(); if(widthratio<=1&&heightratio<=1){ imagelabel.setIcon(image); } int width=-1,height=-1; if(heightratio>=widthratio){ height=imagelabel.getHeight(); } else{ width=imagelabel.getWidth(); } image=new . 资料. .. . . . . . ImageIcon(icon.getImage().getScaledInstance(width,height,Image.SCALE_SMOOTH)); imagelabel.setIcon(image); } else if(source==startbutton){ File[] files; file=chooser.getSelectedFile().getParentFile(); files=file.listFiles(); String filename = files[i].getAbsolutePath(); image=new ImageIcon(filename); ImageIcon icon=new ImageIcon(); icon=image; double widthratio=image.getIconWidth()*1.0/imagelabel.getWidth(); double heightratio=image.getIconHeight()*1.0/imagelabel.getWidth(); if(widthratio<=1&&heightratio<=1){ imagelabel.setIcon(image); } . 资料. .. . . . . . int width=-1,height=-1; if(heightratio>=widthratio){ } else{ } image=new width=imagelabel.getWidth()*2; height=imagelabel.getHeight()*2; ImageIcon(icon.getImage().getScaledInstance(width,height,Image.SCALE_SMOOTH)); } imagelabel.setIcon(image); else if(source==stopbutton){ File[] files; file=chooser.getSelectedFile().getParentFile(); files=file.listFiles(); String filename = files[i].getAbsolutePath(); image=new ImageIcon(filename); ImageIcon icon=new ImageIcon(); icon=image; double . 资料. .. . . . . . widthratio=image.getIconWidth()*1.0/imagelabel.getWidth(); double heightratio=image.getIconHeight()*1.0/imagelabel.getWidth(); if(widthratio<=1&&heightratio<=1){ } double width=-1,height=-1; if(heightratio>=widthratio){ } else{ } image=new width=imagelabel.getWidth()*0.5; height=imagelabel.getHeight()*0.5; imagelabel.setIcon(image); ImageIcon(icon.getImage().getScaledInstance((int)width,(int)height,Image.SCALE_SMOOTH)); } } imagelabel.setIcon(image); public static void main(String[] arges){ final String userName = \"abc\"; . 资料. .. . . . . . final String passwrod = \"123\"; JFrame jFrame = new JFrame(\"登陆界面\"); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); jFrame.setBounds(((int)dimension.getWidth() - 200) / 2, ((int)dimension.getHeight() - 300) / 2, 200, 150); jFrame.setResizable(false); jFrame.setLayout(null); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label1 = new JLabel(\"\"); label1.setBounds(10, 10, 100, 30); jFrame.add(label1); JLabel label2 = new JLabel(\"密码\"); label2.setBounds(10, 40, 100, 30); jFrame.add(label2); final JTextField text1 = new JTextField(); text1.setBounds(50, 15, 130, 20); jFrame.add(text1); . 资料. .. . . . . . final JPasswordField text2 = new JPasswordField(); text2.setBounds(50, 45, 130, 20); jFrame.add(text2); JButton button = new JButton(\"Login\"); button.setBounds(10, 75, 170, 40); button.addActionListener(new ActionListener() { Override public void actionPerformed(ActionEvent e) { if(userName.equals(text1.getText()) && passwrod.equals(text2.getText())) { JOptionPane.showMessageDialog(null, \"登陆成功\提 示\ } else { JOptionPane.showMessageDialog(null, \"错误\提示\ JOptionPane.ERROR_MESSAGE); }); } } text1.setText(\"\"); text2.setText(\"\"); . 资料. .. . . . . . jFrame.add(button); jFrame.setVisible(true); PictureExplorer pe=new PictureExplorer(); pe.launchPictureExplorerTest(); new PictureExplorer(); } } . 资料. .. . 因篇幅问题不能全部显示,请点此查看更多更全内容