1.下面一段代码,不知道是怎么打开图片文件的。
/** * @author Steven * Func: 查看照片 * Created : 2019-8-17 */ import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import javax.swing.SwingConstants; public class ImageViewerDemo { public static void main(String[] args) { EventQueue.invokeLater(()->{ JFrame frame = new ImageViewerFrame(); frame.setVisible(true); }); } } class ImageViewerFrame extends JFrame{ private static final long serialVersionUID = 1L; private JLabel label; private JFileChooser chooser; private static final int DEFAULT_WIDTH = 800; private static final int DEFAULT_HEIGHT = 600; //无参构造 public ImageViewerFrame() { setTitle("图片查看器"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //定义标签 setBounds(300,100,DEFAULT_WIDTH, DEFAULT_HEIGHT); label = new JLabel(); add(label); //定义文件选择器 chooser = new JFileChooser(); chooser.setCurrentDirectory(new File(".")); //定义菜单栏 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); //定义"文件"菜单 JMenu fileMenu = new JMenu("文件(F)"); fileMenu.setMnemonic(KeyEvent.VK_F); //文件快捷键:Alt + F menuBar.add(fileMenu); //定义"帮助"菜单 JMenu helpMenu = new JMenu("帮助(H)"); fileMenu.setMnemonic(KeyEvent.VK_H); //帮助快捷键: Alt + H menuBar.add(helpMenu); //定义"帮助"菜单项 JMenuItem aboutItem = new JMenuItem("关于(A)"); aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.ALT_DOWN_MASK)); //关于加速键:Alt + A helpMenu.add(aboutItem); aboutItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JDialog aboutDialog = new JDialog(); aboutDialog.setTitle("关于" + (new ImageViewerFrame()).getTitle()); aboutDialog.setResizable(false); aboutDialog.setBounds(600, 300, 200, 100); JLabel aboutContentLabel = new JLabel(); aboutContentLabel.setText("<html><body>图片查看器<br>作者:Steven<br>邮箱:99388239@qq.com</body></html>"); aboutContentLabel.setHorizontalAlignment(SwingConstants.CENTER); aboutDialog.add(aboutContentLabel); aboutDialog.setVisible(true); } }); //定义"打开"菜单项 JMenuItem openItem = new JMenuItem("打开(O)"); openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.ALT_DOWN_MASK));//打开加速键:Alt + O fileMenu.add(openItem); openItem.addActionListener(event -> { int result = chooser.showOpenDialog(null); if(result == JFileChooser.APPROVE_OPTION) { String name = chooser.getSelectedFile().getPath(); label.setIcon(new ImageIcon(name)); } }); //定义"退出"菜单项 JMenuItem exitItem = new JMenuItem("退出(Q)"); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.ALT_DOWN_MASK)); //退出加速键:Alt + Q exitItem.setMnemonic(KeyEvent.VK_Q); fileMenu.add(exitItem); exitItem.addActionListener(event -> System.exit(0)); } }
运行后打开图片: