public class Exp7_5 extends JFrame { private JPanel[] thumbPanels; // ËõÂÔÍ¼Ãæ°åÊý×é private JLabel[] thumbLabels; // ËõÂÔͼ±êÇ©Êý×é private File[] imageFiles; // ͼƬÎļþÊý×é private JScrollPane bottom; // ϲ¿µÄ¿É¹ö¶¯Ãæ°å private int currentImageId = -1; // µ±Ç°²é¿´µÄͼƬid private JLabel fullImageLabel; // ÍêÕûͼƬ±êÇ© private JButton next; // ÏÂÒ»ÕŰ´Å¥ private JButton pre; // ÉÏÒ»ÕŰ´Å¥ // »ñµÃpath·¾¶ÏÂËùÓеÄͼƬ£¬²¢Éú³ÉÃæ°å private JPanel[] getThumbPanels(String path) throws URISyntaxException { URL url = super.getClass().getClassLoader().getResource(path); File dir = new File(url.toURI()); // ͼƬ¸ùĿ¼ imageFiles = dir.listFiles(); // µÃµ½Ä¿Â¼ÏµÄËùÓÐÎļþ thumbPanels = new JPanel[imageFiles.length]; thumbLabels = new JLabel[imageFiles.length]; // Êó±êµã»÷ËõÂÔͼ±êÇ©µÄʼþ¼àÌýÆ÷ MouseListener mouseListener = new MouseAdapter() { public void mouseClicked(MouseEvent e) { JLabel clickedLabel = (JLabel) (e.getSource());// µÃµ½µã»÷µÄÄǸö±êÇ© for (int i = 0; i < thumbLabels.length; i++) {// ËùÓбêÇ©±ß¿ò¸´Î» thumbLabels[i].setBorder(BorderFactory.createLineBorder(Color.BLACK)); if (thumbLabels[i] == clickedLabel) { currentImageId = i; // Ð޸ĵ±Ç°²é¿´µÄͼƬid } } clickedLabel.setBorder(BorderFactory.createLineBorder(Color.RED, 5));// µã»÷µÄ±êÇ©¼Ó¿ò ImageIcon image = new ImageIcon(imageFiles[currentImageId].getAbsolutePath()); // ÉìËõͼƬµ½Éϲ¿ÍêÕûͼƬ±êÇ©´óС image.setImage(image.getImage().getScaledInstance(fullImageLabel.getWidth(), fullImageLabel.getHeight(), Image.SCALE_DEFAULT)); fullImageLabel.setIcon(image); checkButtons();// ¸üÐÂÉÏÒ»ÕÅ/ÏÂÒ»ÕŰ´Å¥µÄ״̬ } // Êó±ê½øÈëËõÂÔͼ±êǩʱ¸Ä±äÊó±êÖ¸Õë
public void mouseEntered(MouseEvent e) { JLabel imageLabel = (JLabel) (e.getSource()); imageLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } }; for (int i = 0; i < imageFiles.length; i++) { ImageIcon image = new ImageIcon(imageFiles[i].getAbsolutePath()); JPanel p = new JPanel(new BorderLayout()); thumbLabels[i] = new JLabel(); // Ëõ·ÅͼƬµ½ËõÂÔͼ±êÇ©´óС thumbLabels[i].setIcon(new ImageIcon(image.getImage().getScaledInstance(100, 80, Image.SCALE_DEFAULT))); thumbLabels[i].setBorder(BorderFactory.createLineBorder(Color.BLACK)); thumbLabels[i].addMouseListener(mouseListener); // ¼ÓÊó±êʼþ¼àÌýÆ÷ JLabel textLabel = new JLabel(imageFiles[i].getName()); // ͼƬÏ·½ÎÄ×Ö±êÇ© textLabel.setHorizontalAlignment(JLabel.CENTER); p.add(thumbLabels[i], BorderLayout.CENTER); p.add(textLabel, BorderLayout.SOUTH); thumbPanels[i] = p; } return thumbPanels; } void initUI() throws URISyntaxException { fullImageLabel = new JLabel(); fullImageLabel.setBorder(BorderFactory.createLineBorder(Color.RED)); next = new JButton(new ImageIcon(super.getClass().getClassLoader().getResource(\ pre = new JButton(new ImageIcon(super.getClass().getClassLoader().getResource(\ // ÉÏÒ»ÕÅ/ÏÂÒ»ÕŰ´Å¥µã»÷ʼþµÄ¼àÌýÆ÷ ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getSource() == next) { currentImageId++; } else { currentImageId--; }
// ¸´Î»ËùÓÐËõÂÔͼ±êÇ©µÄ±ß¿ò for (int i = 0; i < thumbLabels.length; i++) { thumbLabels[i].setBorder(BorderFactory.createLineBorder(Color.BLACK)); } // Ñ¡ÖÐÏàÓ¦µÄËõÂÔͼ±êÇ© thumbLabels[currentImageId].setBorder(BorderFactory.createLineBorder(Color.RED, 5)); // ¹öµ½µ½¸ÃËõÂÔͼ±êÇ© bottom.getHorizontalScrollBar().setValue(thumbPanels[currentImageId].getLocation().x); // ¸Ä±äÉϲ¿µÄÍêÕûͼƬ±êÇ© ImageIcon image = new ImageIcon(imageFiles[currentImageId].getAbsolutePath()); image.setImage(image.getImage().getScaledInstance(fullImageLabel.getWidth(), fullImageLabel.getHeight(), Image.SCALE_DEFAULT)); fullImageLabel.setIcon(image); checkButtons(); } }; next.addActionListener(listener); pre.addActionListener(listener); JPanel buttonsPanel = new JPanel(); buttonsPanel.add(pre); buttonsPanel.add(next); // Éϲ¿Ãæ°å£¨°üº¬ÍêÕûͼƬ±êÇ©ºÍ2¸ö°´Å¥£© JPanel top = new JPanel(new BorderLayout(0, 10)); top.add(fullImageLabel, BorderLayout.CENTER); top.add(buttonsPanel, BorderLayout.SOUTH); top.setSize(705, 410); top.setLocation(5, 5); add(top); // ϲ¿ËõÂÔÍ¼Ãæ°å JPanel thumbPanel = new JPanel(); bottom = new JScrollPane(thumbPanel); JPanel[] thumbPanels = getThumbPanels(\ for (int i = 0; i < thumbPanels.length; i++) { thumbPanel.add(thumbPanels[i]);
}
}
}
setLayout(null);
bottom.setSize(705, 130); bottom.setLocation(5, 430); add(bottom);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setSize(720, 600); setVisible(true);
private void checkButtons() { if (currentImageId == 0) { // µÚÒ»ÕÅ pre.setEnabled(false); } if (currentImageId == imageFiles.length - 1) { // ×îºóÒ»ÕÅ next.setEnabled(false); } if (currentImageId > 0 && currentImageId < imageFiles.length - 1) { pre.setEnabled(true); next.setEnabled(true); } }
public static void main(String[] args) throws URISyntaxException { Exp7_5 t = new Exp7_5(); t.initUI(); }
µÚ°ËÕ ʵÑéÒ»
/*********************************
1. µã»÷´°¿ÚµÄ¹Ø±Õ°´Å¥Ê±£¬µ¯³ö°üº¬¡°ÊÇ¡±ºÍ¡°·ñ¡±Ñ¡ÏîµÄģ̬¶Ô»°¿ò£¬ µã»÷¡°ÊÇ¡±Ôò¹Ø±Õ´°¿Ú£¬·ñÔò²»¹Ø±Õ¡£ **********************************/ package ch09;
import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Exp8_1 extends JFrame { void initUI() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { int b = JOptionPane.showConfirmDialog(Exp8_1.this, \È·ÈÏÒª¹Ø±Õ°´´°¿ÚÂð£¿\Ìáʾ\ if (b == JOptionPane.YES_OPTION) { System.exit(-1); } } }); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setResizable(false); setSize(600, 400); setVisible(true); } public static void main(String[] args) { Exp8_1 t = new Exp8_1(); t.initUI(); } }
ʵÑé¶þ
/*********************************
2. ±àдGUI³ÌÐòÄ£ÄâIEä¯ÀÀÆ÷£¬¾ßÌåÒªÇóÈçÏ¡£
¢Ù ÔÚ´°¿Ú¶¥²¿ÓÐÒ»¸ö¿É±à¼µÄÏÂÀÁÐ±í£¬ÒÔÊäÈëÍøÖ·¡£
¢Ú ÈôÊäÈëµÄÍøÖ·Ö®Ç°Î´ÊäÈë¹ý£¬ÔòÌí¼Óµ½ÏÂÀÁбíÖУ¨Ä£ÄâIEµÄÀúÊ·¼Ç¼£©¡£ ¢Û ÊäÈë»òÑ¡ÔñÁËÒ»¸öÍøÖ·ºó£¬ÔÚ´°¿Úϲ¿µÄ±à¼Æ÷Ãæ°åÖÐÏÔʾÏàÓ¦ÍøÒ³¡£ **********************************/