《Java程序设计》第14周实验作业:GUI编辑初步

作业要求:

【目的】
1. 掌握图形化WindowBuilder的使用方式。
2. 理解Java中事件机制。
 

【目标】
1. 掌握Eclipse中安装 WindowBuilder的方法。
2. 了解Java中事件机制。
3. 了解GUI中重用控件。
 

【方法与步骤】
1. 离线下载
WindowBuilder。
    WindowBuilder是一款基于Eclipse平台的双向Java的GUI设计插件式的软件。它具备SWT/JFACE开发、Swing开发及GWT 开发三大功能,是一款不可多得的Java体系中的WYSIWYG工具。
 
(1)自己网站下载 

    下载:http://www.eclipse.org/windowbuilder/download.php ,根据Eclipse的版本(一般为4.4Luna),点击 Zipped Update Site下面的 link 链接。

    再点击下面的图标,就可以下载到WB_v1.7.0_UpdateSite_for_Eclipse4.4.zip了。


(2)直接网盘下载
    直接到老师的百度网盘中下载
WB_v1.7.0_UpdateSite_for_Eclipse4.4.zip 即可(下载链接)。

2. 安装
WindowBuilder。
    参考两篇博文  Eclipse 可视化插件WindowBuilder安装 离线安装WindowBuilder。有问题,同学之间多交流,肯定能够搞定。也可以打电话给老师(短号:665880)。

3. 使用WindowBulider
    可以 看下面的视频啦。
(1) 14-8.WindowBuilder简介(链接
 。
(2)最好把如下视频片段都看完,一共不到2个小时,但是会对整个GUI编程有一个很清晰的了解。

 
 4. 完成一个GUI作业,作业要求如下。
(1)功能:有一个按钮(JButton)和一个标签(JLabel),当点击 按钮后,能够显示下一张图片。点击图片下载,获得图片样本。
 
(2)如何在Jlabel中设置图片,请仔细观看视频  正在播放:14-14.常用控件(链接)。
(3)进一步改进:请增加显示“显示上一张图片”按钮;请编辑代码,使得图片都缩放为200*200像素大小,并显示。 
(4)图片显示的示例代码:
 
import  java. awt. BorderLayout;
import  java. awt. EventQueue;
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( 100100576404);
         contentPane  =  new  JPanel();
         contentPane. setBorder( new  EmptyBorder( 5555));
         setContentPane( contentPane);
         contentPane. setLayout( null);
         JLabel  lblNewLabel  =  new  JLabel( "New label");
         lblNewLabel. setBackground( Color. YELLOW);
         lblNewLabel. setForeground( Color. PINK);
         lblNewLabel. setBounds( 4886467248);
         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)));
                        // 
                        lblNewLabel. setBounds( 4886icon. getIconWidth(),  icon. getIconHeight());   
                        // Jlabelicon
                        lblNewLabel. setIcon( icon);
                        // 99
                        idImg  =  idImg +1;
                        if( idImg == 10)
                             idImg  =  1;
                  }  catch ( IOException  e1) {
                        // TODO Auto-generated catch block
                        e1. printStackTrace();
                  }
             }
        });
         btnNewButton. setBounds( 1943715328);
         contentPane. add( btnNewButton);
    }
}
 
插入部分代码:
import java.awt.BorderLayout;
import java.awt.EventQueue;

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.
	 * @param args
	 */
	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("");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100,100,576,404);
		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(48,86,467,248);
	contentPane.add(lblNewLabel);
	
	JButton btnNewButton=new JButton("");
	btnNewButton.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			ImageIcon icon;
			try {
				//获取图片的路径
				String strImgFile="";
			    //得到图片的完整路径
				strImgFile=strImgFile + String.valueOf(idImg)+"jpg";
				//读取图片
				icon=new ImageIcon(ImageIO.read(new File(strImgFile)));
				//获得图片的长度和宽度
				lblNewLabel.setBounds(48,86,icon.getIconWidth(),icon.getIconHeight());
				
				//为下一张图片做准备,一共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);
	}
}
附上运行结果图:


总结:

对于图像的缩放,我感觉它并没有在这个程序中实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值