作业要求:
【目的】
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编程有一个很清晰的了解。
![](https://img-blog.csdn.net/20150701112841100?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAyNjkyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4. 完成一个GUI作业,作业要求如下。
(1)功能:有一个按钮(JButton)和一个标签(JLabel),当点击 按钮后,能够显示下一张图片。点击图片下载,获得图片样本。
![](https://img-blog.csdn.net/20150701112859597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDAyNjkyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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)图片显示的示例代码:
(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(
100,
100,
576,
404);
contentPane
=
new
JPanel();
contentPane.
setBorder(
new
EmptyBorder(
5,
5,
5,
5));
setContentPane(
contentPane);
contentPane.
setLayout(
null);
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(
"\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(
48,
86,
icon.
getIconWidth(),
icon.
getIconHeight());
// 设置Jlabel标签的icon(图标)
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);
}
}
插入部分代码:
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);
}
}
附上运行结果图:
总结:
对于图像的缩放,我感觉它并没有在这个程序中实现。