【目的】
1. 掌握图形化WindowBuilder的使用方式。
2. 理解Java中事件机制。
【目标】
1. 掌握Eclipse中安装WindowBuilder的方法。
2. 了解Java中事件机制。
3. 了解GUI中重用控件。
4. 完成一个GUI作业,作业要求如下。
(1)功能:有一个按钮(JButton)和一个标签(JLabel),当点击 按钮后,能够显示下一张图片。点击图片下载,获得图片样本。
import java.awt.EventQueue; import java.awt.Image; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JLabel; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; public class ImgDemo extends JFrame { private JPanel contentPane; private int idImg = 1; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { ImgDemo frame = new ImgDemo(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public ImgDemo() { setTitle("\u56FE\u7247\u663E\u793A"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 576, 604); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); final JLabel lblNewLabel = new JLabel("New label"); lblNewLabel.setBackground(Color.YELLOW); lblNewLabel.setForeground(Color.PINK); lblNewLabel.setBounds(58, 86, 600, 500); contentPane.add(lblNewLabel); JButton btnNewButton = new JButton("\u663E\u793A\u4E0B\u4E00\u5F20\u56FE\u7247"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ImageIcon icon; try { // 获取图片的路径 String strImgFile = "E:/demoPhoto/"; // 得到图片的完整路径 strImgFile = strImgFile + String.valueOf(idImg) + ".jpg"; // 读取图片 icon = new ImageIcon(ImageIO.read(new File(strImgFile))); // 从图表中获取到图片 Image image = icon.getImage(); // 缩放图像 Image smallImage = image.getScaledInstance(400,400,Image.SCALE_FAST); //把Image文件转化为ImageIcon icon = new ImageIcon(smallImage); lblNewLabel.setIcon(icon); // 为下一张图片做准备,一共9张图片,显示完第9张后,重新显示第一张 idImg = idImg+1; if(idImg==10) idImg = 1; } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); btnNewButton.setBounds(194, 37, 153, 28); contentPane.add(btnNewButton); } }
时间: 2024-10-07 20:00:41