网络相册(只能本地)

编程入门 行业动态 更新时间:2024-10-27 02:27:04

<a href=https://www.elefans.com/category/jswz/34/972834.html style=网络相册(只能本地)"/>

网络相册(只能本地)

网络相册

网络相册

    • 网络相册
  • 登陆注册界面
    • 关于gui及图片的上传,下载,删除功能,还有一个界面设计
      • 关于图片的浏览

登陆注册界面

太久太久没有在c站作总结了,今天来这里补一篇开学老师给我们布置的小任务吧
这里我完成了登录和注册的功能,美中不足是我暂时只学到了IO流,没有办法用数据库来进行存储,这里面无论是关于
图片文件,亦或者照片存储与上传,皆用到的是gui和io流的知识,惭愧,不过后面我还会发表一篇五子棋,用Javafx
写的,也会设计网络编程的知识,用到一些算法

这里我用到了1一张图片作为背景,注意路径

package com01;import javax.swing.*;
import javax.swing.border.MatteBorder;
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;
import java.util.HashMap;
import java.util.Map;public class Text extends JFrame {public static void main(String[] args) {new Text();}public Text() {JPanel jp1,jp2,jp3;JLabel jlb1,jlb2;JTextField jt1;JPasswordField jt2;JButton jb1,jb2;JFrame t=new JFrame();t.setSize(400,250);t.setLocationRelativeTo(null);t.setDefaultCloseOperation(3);t.setTitle("网络相册");t.setLayout(new GridLayout(3,1));t.setIconImage(new ImageIcon("src\\com02\\bg1.jpg").getImage());jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();t.add(jp1);t.add(jp2);t.add(jp3);jlb1=new JLabel("用户名");jt1=new JTextField(10);jt2=new JPasswordField(10);jlb2=new JLabel("密码");jb1=new JButton("登录");jb2=new JButton("注册");jp1.add(jlb1);jp1.add(jt1);jp2.add(jlb2);jp2.add(jt2);jp3.add(jb1);jp3.add(jb2);t.setVisible(true);Map<String,String>map=new HashMap<>();String line;File file=new File("src\\com03");try {BufferedReader br=new BufferedReader(new FileReader(file));while ((line=br.readLine())!=null){String[]str=line.split(",");map.put(str[0],str[1]);}} catch (Exception e) {e.printStackTrace();}jb1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String name=jt1.getText().trim();String password=new String(jt2.getPassword()).trim();String password2=map.get(name);if(jt1.getText().trim().length()==0||new String(jt2.getPassword()).trim().length()==0){//trim():用于删除头尾的空白符JOptionPane.showMessageDialog(null,"用户名密码不允许为空","message",JOptionPane.ERROR_MESSAGE);}else if(jt1.getText().trim().length() > 11||new String(jt2.getPassword()).trim().length() > 8){JOptionPane.showMessageDialog(null, "用户名或密码超出指定位数","message",JOptionPane.WARNING_MESSAGE);}else if(map.containsKey(name)&&password.equals(password2)){JOptionPane.showMessageDialog(null, "登录成功");new Main().run( );t.setVisible(false);}else{JOptionPane.showMessageDialog(null, "用户名或密码错误","message",JOptionPane.QUESTION_MESSAGE);}}});jb2.addActionListener(new ActionListener() {//设置监听@Overridepublic void actionPerformed(ActionEvent e) {new AdminRegister();t.setVisible(false);}});}
}

上面是登陆,下面这个是注册界面

package com01;import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;public class AdminRegister extends JFrame {public static void main(String[] args) {new AdminRegister();}JTextField jt;JPasswordField jw, jw1;Font fw = new Font("宋体", Font.BOLD, 20);public AdminRegister() {setTitle("注册窗口");setBounds(500, 100, 607, 469);setLayout(null);setDefaultCloseOperation(2);setLocationRelativeTo(null);setIconImage(new ImageIcon("src\\com02\\bg1.jpg").getImage());JLabel jl1 = new JLabel(new ImageIcon("src\\com02\\bg1.jpg"));jl1.setBounds(0, 0, 607, 409);add(jl1);// 在LayeredPane最底层上添加两个带图片的标签,并且label2在label1上方this.getLayeredPane().add(jl1, new Integer(Integer.MIN_VALUE));// 将内容面板设置为透明,就能够看见添加在LayeredPane上的背景。((JPanel) this.getContentPane()).setOpaque(false);JPanel jp1 = new JPanel();JLabel jl = new JLabel(" 用 户 名: ");jl.setFont(fw);jl.setBounds(130, 195, 120, 35);add(jl);jt = new JTextField();jt.setBounds(230, 195, 200, 35);add(jt);JLabel jl2 = new JLabel("密       码:");jl2.setFont(fw);jl2.setBounds(130, 245, 120, 35);add(jl2);jw = new JPasswordField();jw.setBounds(230, 245, 200, 35);add(jw);JLabel jl3 = new JLabel("确认密码:");jl3.setFont(fw);jl3.setBounds(130, 295, 120, 25);add(jl3);jw1 = new JPasswordField();jw1.setBounds(230, 295, 200, 35);add(jw1);JButton ju = new JButton("提交");ju.setBounds(180, 370, 80, 30);ju.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//e.getActionCommand()得到的是buttonString buttonname = e.getActionCommand();if (buttonname.equals("提交")) {String str = String.valueOf(jw.getPassword());String str1 = String.valueOf(jw1.getPassword());if (jt.getText().trim().length() == 0 || new String(jw1.getPassword()).trim().length() == 0) {//trim():用于删除头尾的空白符JOptionPane.showMessageDialog(null, "用户名密码不允许为空", "message", JOptionPane.ERROR_MESSAGE);} else if (jt.getText().trim().length() > 11 || new String(jw1.getPassword()).trim().length() > 8) {JOptionPane.showMessageDialog(null, "用户名或密码超出指定位数", "message", JOptionPane.WARNING_MESSAGE);} else {if (str.equals(str1)) {String str2 = jt.getText() + "," + str;File f = new File("src\\com03");//File f=new File("c:/info.txt");try {if (!f.exists()) {f.createNewFile();}//包装设计模式FileWriter hu = new FileWriter(f, true);BufferedWriter buff = new BufferedWriter(hu);buff.write(str2);//高效字符输出流的特有方法newline()buff.newLine();//将缓冲区中的数据刷到目的地文件中buff.flush();buff.close();JOptionPane.showMessageDialog(null, "写入成功");new Text();dispose();} catch (Exception e1) {e1.printStackTrace();}} else {JOptionPane.showMessageDialog(null, "两次密码不相同,请重新输入密码");jw.setText("");jw1.setText("");}}}}});add(ju);JButton ju1 = new JButton("取消");ju1.setBounds(300, 370, 80, 30);ju1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {jt.setText("");jw.setText("");jw1.setText("");}});add(ju1);this.setVisible(true);}}

关于gui及图片的上传,下载,删除功能,还有一个界面设计

啊这里提醒一下,我的所有图片文件放到src下的com02里
至于账号和密码我存储到com03里了
package com01;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import com01.BackgroundPanel;public class Main extends JFrame {List<BufferedImage> images=new ArrayList<>();public  void run()  {BackgroundPanel bp=new BackgroundPanel();JFrame frame=new JFrame("管理窗口");frame.setSize(500,800);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(3);frame.setLayout(new BorderLayout());frame.getContentPane().add(bp);//创建菜单栏JMenuBar menuBar=new JMenuBar();//创建一级菜单JMenu fileMenu=new JMenu("文件");//包含上传和下载JMenu viewMenu=new JMenu("浏览");//一级菜单加入菜单栏menuBar.add(fileMenu);menuBar.add(viewMenu);//创建一级菜单"文件"的子菜单JMenuItem upload =new JMenuItem("上传");JMenuItem download =new JMenuItem("下载");JMenuItem delet=new JMenuItem("删除");JMenuItem vv =new JMenuItem("看一看");//子菜单加入一级菜单栏fileMenu.add(upload);fileMenu.add(download);fileMenu.add(delet);viewMenu.add(vv);delet.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {}});vv.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new ImageChanges();}});upload.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Image image=Jc();}});download.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Image image1=Jk();}});delet.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jp();}});frame.setJMenuBar(menuBar);frame.setVisible(true);}//本地文件路径读取int m;public Image Jc(){BufferedImage image=null;//点击上传文件的时候都会弹出一个框让我们选择要上传的文件,虽然经常遇到,但却不知道这是哪种组件。在Java里面这种文件导航窗口就是FileChooser啦,JFileChooser jFileChooser=new JFileChooser();//文件后缀过滤FileNameExtensionFilter filter=new FileNameExtensionFilter("图片文件","jpg","png");jFileChooser.setFileFilter(filter);//显示对话框int ret=jFileChooser.showOpenDialog(this);if (ret==JFileChooser.APPROVE_OPTION){//获取用户选择结果,常常用于判断文件是否要打开或者保存//获取<打开>或保存的文件File file=jFileChooser.getSelectedFile();System.out.println(file);try {//读取这个照片文件,用来转换//image=ImageIO.read(new File(String.valueOf(file)));image=ImageIO.read(new FileInputStream(String.valueOf(file)));File outputfile  = new File("D:\\apple\\day_17  network album\\src\\com02\\"+m+".jpg");m++;ImageIO.write(image,"jpg",outputfile.getAbsoluteFile());//System.out.println(String.valueOf(file));} catch (IOException e) {e.printStackTrace();}}return image;}//网盘路径读取public Image Jk(){BufferedImage image=null;JFileChooser jFileChooser=new JFileChooser("D:\\apple\\day_17  network album\\src\\com02\\");int ret2=jFileChooser.showOpenDialog(this);//点击打开(确认或者保存)if (ret2==JFileChooser.APPROVE_OPTION){File file=jFileChooser.getSelectedFile();JFileChooser jf=new JFileChooser();int ret3=jf.showOpenDialog(this);if (ret3==JFileChooser.APPROVE_OPTION){File file1=jf.getSelectedFile();try {image=ImageIO.read(new FileInputStream(String.valueOf(file)));ImageIO.write(image,null,file1);} catch (IOException e) {e.printStackTrace();}}}return image;}public void  jp(){JFileChooser jFileChooser=new JFileChooser("D:\\apple\\day_17  network album\\src\\com02\\");jFileChooser.setApproveButtonText("删除");int ret=jFileChooser.showOpenDialog(this);if (ret==JFileChooser.APPROVE_OPTION){File file=jFileChooser.getSelectedFile();file.delete();}}}
package com01;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;class BackgroundPanel extends JPanel implements ActionListener {ImageIcon icon = null;JButton b1 = null;JFileChooser fileChooser = null;String str = null;Graphics g = this.getGraphics();public BackgroundPanel() {b1 = new JButton("打开文件");b1.addActionListener(this);this.add(b1);fileChooser = new JFileChooser("src\\com02");}public void actionPerformed(ActionEvent e){File file = null;int result;if (e.getActionCommand().equals("打开文件")){fileChooser.setApproveButtonText("打开吗");fileChooser.setDialogTitle("确定");result = fileChooser.showOpenDialog(this);if (result == JFileChooser.APPROVE_OPTION){str = fileChooser.getSelectedFile().getAbsolutePath();System.out.println(str);icon = new ImageIcon(str);repaint(); //调用paint()}}}//覆盖paint()函数public void paint(Graphics g) {if (icon!=null){Image image = icon.getImage();g.drawImage(image, 0, 0, icon.getImageObserver());}}
}class my extends JFrame {BackgroundPanel bp;public my() {bp = new BackgroundPanel();this.getContentPane().add(bp);this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);this.setSize(500,500);this.setVisible(true);}public static void main(String[] args) {new my();}
}

关于图片的浏览

package com01;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.JLabel;
import javax.swing.ImageIcon;public class ImageChanges extends JFrame{private JFrame jf;private JButton button1;//上一张图片按钮private JButton button2;//下一张图片按钮private JLabel label;//label用于摆放图片private int i=(int)SelectFile.picCount();//设置全局的图片张数变量,默认值为3ImageChanges(){jf = new JFrame("图片变换");label = new JLabel("");label.setIcon(new ImageIcon("src\\com02\\bg1.jpg"));//先给label添加一张默认图片,即bg1.jpglabel.setBounds(0, 0, 800, 800);//设置label的位置和大小jf.setBounds(0, 0, 500, 860);//设置jf的位置和大小//jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);//设置程序和窗口同步关闭jf.setLocationRelativeTo(null);jf.add(label,BorderLayout.CENTER);//窗体绝对布局File file=new File("src\\com02");File[] files=file.listFiles();button1 = new JButton("上一张");//点击切换上一张图片button1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {button2.setEnabled(true);//将“下一张”按钮设置为有效if (i>1)i--;//点击上一张,i--ImageIcon icon=new ImageIcon(files[i-1].getPath());//              等比缩放条件
//              int imgWidth=icon.getIconWidth();
//              int imgHeight=icon.getIconHeight();
//              int conWidth=getWidth();
//              int conHeight=getHeight();
//              int reImgWidth;
//              int reImgHeight;
//              if(imgWidth/imgHeight>=conWidth/conHeight){
//                  if(imgWidth>conWidth){
//                      reImgWidth=conWidth;
//                      reImgHeight=imgHeight*reImgWidth/imgWidth;
//                  }else{
//                      reImgWidth=imgWidth;
//                      reImgHeight=imgHeight;
//                  }
//              }else{
//                  if(imgWidth>conWidth){
//                      reImgHeight=conHeight;
//                      reImgWidth=imgWidth*reImgHeight/imgHeight;
//                  }else{
//                      reImgWidth=imgWidth;
//                      reImgHeight=imgHeight;
//                  }
//              }
//              icon=new ImageIcon(icon.getImage().getScaledInstance(reImgWidth, reImgHeight, Image.SCALE_DEFAULT));label.setIcon(icon);//重新为label设置新图片if (i == 1){//如果到达第一张,将“上一张按钮设置为失效”button1.setEnabled(false);JOptionPane.showMessageDialog(ImageChanges.this, "当前为第一张图片");//并弹出提示框}}});button1.setBounds(0, 780, 93, 30);jf.add(button1);button2 = new JButton("下一张");//点击切换下一张图片button2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {button1.setEnabled(true);//将“上一张”按钮设置为有效if (i<SelectFile.picCount())i++;//点击下一张,i++ImageIcon icon=new ImageIcon(files[i-1].getPath());label.setIcon(icon);if (i == SelectFile.picCount()){//如果到达最后一张,将“下一张按钮设置为失效”//label.setIcon(new ImageIcon(files[i-1].getPath()));button2.setEnabled(false);//按钮设置为失效状态JOptionPane.showMessageDialog(ImageChanges.this, "当前浏览相册至底部");//并弹出提示框}}});button2.setBounds(150, 780, 93, 30);jf.add(button2);jf.getContentPane().add(label);jf.setVisible(true);//设置窗体可见}public static void main(String[] args) {new ImageChanges();System.out.println(SelectFile.picCount());}
}

com02


怎么说呢,感觉自己的美感还需要提升,因为写的仓促,这篇我后面学完别的东西会重新写的
就像余老师说的,提高自己能力的一种方法,就是在自己以往写过的代码上,做出改进和提升

更多推荐

网络相册(只能本地)

本文发布于:2023-07-01 07:47:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/972827.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络相册

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!