想用java编写一个图片浏览器,请问该怎么实现?

用到布局
取出文件夹中所有图片后 将图片放进网格布局中 每个网格显示6张图片 并且网格布局可以上下翻页 查看文件夹中所有的图片 然后 点击 ”大图浏览“ (网格布局中显示的)用卡片布局 进行单个图浏览 并且可以上下翻页

莫回无
浏览 151回答 2
2回答

大话西游666

稍麻烦一点,下午给出代码-------------------------------------------------------------import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Dimension;import java.awt.Graphics;import java.awt.GridLayout;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.filechooser.FileNameExtensionFilter;public class ImageView extends JFrame {private boolean isSingle = true;private JPanel panel = new JPanel();private CardLayout card = null;private File[] files = null;private int fileIndex = 0;private JPanel single = new JPanel();private JPanel multiple = new JPanel();public ImageView() {setDefaultCloseOperation(EXIT_ON_CLOSE);setLocationRelativeTo(null);setSize(600, 450);setResizable(false);getContentPane().setLayout(null);card = new CardLayout(0, 0);panel.setLayout(card);panel.setBounds(12, 46, 570, 328);getContentPane().add(panel);panel.add(single, "single");single.setLayout(new BorderLayout(0, 0));panel.add(multiple, "multiple");multiple.setLayout(new GridLayout(2, 3, 0, 0));JButton btnBrowse = new JButton("Browse...");btnBrowse.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFileChooser chooser = new JFileChooser();FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");chooser.setFileFilter(filter);chooser.setMultiSelectionEnabled(true);int returnVal = chooser.showOpenDialog(getContentPane());if (returnVal == JFileChooser.APPROVE_OPTION) {files = chooser.getSelectedFiles();showPicture();}}});btnBrowse.setBounds(12, 10, 91, 21);getContentPane().add(btnBrowse);JButton btnSingle = new JButton("single");btnSingle.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {isSingle = true;card.show(panel, "single");showPicture();}});btnSingle.setBounds(115, 10, 91, 21);getContentPane().add(btnSingle);JButton btnMultiple = new JButton("multiple");btnMultiple.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {isSingle = false;card.show(panel, "multiple");showPicture();}});btnMultiple.setBounds(218, 10, 91, 21);getContentPane().add(btnMultiple);JButton btnPrevious = new JButton("previous");btnPrevious.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (isSingle) {fileIndex -= 1;} else {fileIndex -= 6;}showPicture();}});btnPrevious.setBounds(92, 384, 91, 21);getContentPane().add(btnPrevious);JButton btnNext = new JButton("next");btnNext.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (isSingle) {fileIndex += 1;} else {fileIndex += 6;}showPicture();}});Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();setLocation((screenSize.width - getWidth()) / 2,(screenSize.height - getHeight()) / 2);btnNext.setBounds(423, 384, 91, 21);getContentPane().add(btnNext);setVisible(true);}private void showPicture() {if (files == null || files.length == 0) {return;}if (fileIndex > files.length || fileIndex < 0) {fileIndex = 0;}PicturePanel canvas = null;if (isSingle) {if (single.getComponentCount() > 0) {canvas = (PicturePanel) single.getComponent(0);} else {canvas = new PicturePanel();single.add(canvas, BorderLayout.CENTER);}canvas.setPath(files[fileIndex].getPath());canvas.repaint();single.repaint();} else {for (int i = 0; i < 6; i++) {if (files.length == fileIndex + i) {break;}if (multiple.getComponentCount() > i) {canvas = (PicturePanel) multiple.getComponent(i);} else {canvas = new PicturePanel();multiple.add(canvas);}canvas.setPath(files[fileIndex + i].getPath());canvas.repaint();multiple.repaint();}}panel.updateUI();}public static void main(String[] args) {new ImageView();}}class PicturePanel extends JPanel {private Image image;public PicturePanel() {}public void setPath(String filename) {ImageIcon icon = new ImageIcon(filename);this.image = icon.getImage();}public void paint(Graphics g) {super.paint(g);}protected void paintComponent(Graphics g) {super.paintComponent(g);g.drawImage(image, 0, 0, 400, 300, this);}}

偶然的你

import java.awt.BorderLayout;import java.awt.Graphics;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.util.ArrayList;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;public class ImageGallery extends JFrame implements ActionListener {public static final int G_WIDTH = 400, G_HEIGHT = 620;public static final int L_WIDTH = 1200, L_HEIGHT = 520;public static final int MAX_R = 3, MAX_C = 2;public static final int GRID = 1, LARGE = 2;private JFileChooser chooser;private JMenuBar toolBar;private JMenu menu;private JMenuItem open;private ArrayList<String> paths;private JPanel showingPanel, buttonPanel;private int page = 1;private int count = 0;private int showType = GRID;private int pageMax;private JButton last, next, large, grid;public ImageGallery() {this.setTitle("Image gallery 0.1");this.setBounds(100, 100, G_WIDTH, G_HEIGHT);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);toolBar = new JMenuBar();chooser = new JFileChooser();chooser.setCurrentDirectory(new java.io.File("."));chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);menu = new JMenu("File");toolBar.add(menu);open = new JMenuItem("open");open.addActionListener(this);menu.add(open);paths = new ArrayList<String>();this.setJMenuBar(toolBar);showingPanel = new JPanel();buttonPanel = new JPanel();last = new JButton("last");last.addActionListener(this);next = new JButton("next");next.addActionListener(this);large = new JButton("large");large.addActionListener(this);grid = new JButton("grid");grid.addActionListener(this);buttonPanel.add(last);buttonPanel.add(large);buttonPanel.add(grid);buttonPanel.add(next);this.add(buttonPanel, BorderLayout.SOUTH);this.add(showingPanel);this.setVisible(true);}public void doOpen() {int result = chooser.showOpenDialog(null);if (result == JFileChooser.APPROVE_OPTION) {String directory = chooser.getSelectedFile().getPath();this.getAllImage(directory);for (String s : this.paths) {System.out.println(s);}this.showingImage();}}public void getAllImage(String directory) {paths.clear();page = 1;count = 0;File file = new File(directory);if (file.isDirectory()) {String[] list = file.list();for (String s : list) {String path = directory + "\\" + s;File temp = new File(path);if (!temp.isDirectory()) {this.paths.add(path);}}}}public void changePage(int page) {if (!paths.isEmpty()) {switch (showType) {case GRID:this.page += page;if (this.page == 0) {this.page = 1;}if (this.page > pageMax) {this.page = pageMax;}break;case LARGE:this.count += page;if (count < 0) {count = 0;}if (count > paths.size() - 1) {count = paths.size() - 1;}break;}this.showingImage();}}public void showingImage() {this.remove(showingPanel);showingPanel = new JPanel();int size = paths.size();int max = MAX_R * MAX_C;pageMax = (size % max == 0 ? size / max : size / max + 1);switch (showType) {case GRID:this.setBounds(100, 100, G_WIDTH, G_HEIGHT);showingPanel.setLayout(new GridLayout(MAX_R, MAX_C - 1));int i = (page - 1) * max;int j = page * max;for (; i < j && i < size; i++) {String path = paths.get(i);showingPanel.add(new ImagePanel(path));}break;case LARGE:int left = count - 1;int right = count + 1;this.setBounds(100, 100, L_WIDTH, L_HEIGHT);showingPanel.setLayout(new GridLayout(1, 2));if (left >= 0) {showingPanel.add(new ImagePanel(paths.get(left)));} else {showingPanel.add(new ImagePanel(""));}showingPanel.add(new ImagePanel(paths.get(count)));if (right < size) {showingPanel.add(new ImagePanel(paths.get(right)));} else {showingPanel.add(new ImagePanel(""));}break;}this.add(showingPanel, BorderLayout.CENTER);showingPanel.updateUI();}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubnew ImageGallery();}class ImagePanel extends JPanel {private ImageIcon image;ImagePanel(String path) {image = new ImageIcon(path);}public ImageIcon getImageIcon() {return this.image;}@Overrideprotected void paintComponent(Graphics g) {// TODO Auto-generated method stubg.drawImage(image.getImage(), 0, 0, this.getWidth(), this.getHeight(), this);}}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString key = e.getActionCommand();System.out.println(key);if (key.equals("open")) {doOpen();} else if (key.endsWith("last")) {changePage(-1);} else if (key.endsWith("next")) {changePage(1);} else if (key.endsWith("large")) {if (!paths.isEmpty()) {count =0;showType = LARGE;showingImage();}} else if (key.endsWith("grid")) {if (!paths.isEmpty()) {page = 1;showType = GRID;showingImage();}}}}
打开App,查看更多内容
随时随地看视频慕课网APP