eclipse插件---WindowBuilder

来源:互联网 发布:泰坦尼克号真相 知乎 编辑:程序博客网 时间:2024/06/10 17:46

WindowBuilder:一款功能强大的Java GUI设计工具

JavaGUI开发可以算是个人弱项,或者说在学习Java的历程中人为地把SWT以及Swing这些知识忽略了,在这里迫切的拾起来,也算是出来混的总要还系列。

安装篇

官方网站
下载地址

在下载地址找到自己使用的eclipse的对应版本,然后粘贴到eclipse的安装新插件界面,回车,全选,下载。

然后下载失败= =,只好使用zip的方式下载了。

然后经过了3次的下载失败之后终于成功了。将zip文件解压缩,然后拖拽进eclipse根目录下的dropins文件夹中,重启eclipse,插件安装完毕。

随便新建一个项目
然后进入项目中
进入文件栏,右键鼠标->new->other,在搜索框输入window
搜索window

可以看到WindowBuilder下的创建选项,直接创建Swing Designer下的应用。
就和创建一个新的类一样。

创建完成如下,点击Source就是代码模式,点击下方Design就可以进入设(jian)计(dan)模式

因为我也是第一次接触,需要快速上手,不过出于情怀向还是先打印一个helloword表示一波情怀

点击Design的初始界面如下

鼠标放到图标上就可以看到详细的介绍,而且详细介绍的所有单词都可以选中,如果是英文菜鸡的话整一个什么右键或者选中翻译的插件就可以,或许不会很坑?

选择一个布局,就像是一个属性一样可以给这个窗口赋予,图上所选中的是绝对位置,可以随便放置那些元素,自由度较高,还有其它的可以试试,选中后把鼠标放到窗口上会变成绿色还有一个加号,单击,属性赋予完成

然后随便拖拽了一个按钮到画布上面,修改了一下名称,我想尝试点击它的时候触发一个事件什么的。


使用篇

双击那个按钮会回到代码区域,看来它把我们的按钮对象称为btnHelloWorld。
可以看看这个对象有什么能够使用的方法。

        JButton btnHelloWorld = new JButton("Hello World");

希望实现一个点击之后发起http请求去下载一下静态资源然后保存到本地硬盘中;恩。。貌似有点麻烦,不过再麻烦的东西经过细化之后也是能够实现的,作为一个Demo还是合格的吧。

然后直接点进了JButton类的源码中,emmm,mmp继承关系还挺复杂的,不管了….有空再来研究下吧,现在还是得快速上手。

然后看了看我们的HelloWorld按钮对象,好多的方法 = = ,于是回到了UI界面,尼玛这个玩意竟然能够右键。。。

那么直接为这个对象创建一个鼠标单击事件。
创建事件时会回到代码编辑中,写一个测试用的输出

        JButton btnHelloWorld = new JButton("Hello World");        btnHelloWorld.addMouseListener(new MouseAdapter() {            @Override            public void mouseClicked(MouseEvent e) {                System.out.println("Hello World");            }        });

在main所在的类中直接run as javaapp测试一下点击事件


emm效果好评。

那么接下来发起http请求吧~

点击按钮发起Http请求

因为是maven项目,所以直接在pom中导入jar包,什么都不管先把这几个jar包搞进来

        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.1.29</version>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>            <version>4.3.3</version>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>fluent-hc</artifactId>            <version>4.3.3</version>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpmime</artifactId>            <version>4.3.3</version>        </dependency>

为了好看,再另起一个包,下载工具类吧

package org.http;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class HttpDownLoadUtil {        /**            * 从网络Url中下载文件            * @param urlStr            * @param fileName            * @param savePath            * @throws IOException            */            public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{                URL url = new URL(urlStr);                  HttpURLConnection conn = (HttpURLConnection)url.openConnection();                          //设置超时间为3秒                conn.setConnectTimeout(3*1000);                //防止屏蔽程序抓取而返回403错误                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");                //得到输入流                InputStream inputStream = conn.getInputStream();                  //获取自己数组                byte[] getData = readInputStream(inputStream);                    //文件保存位置                File saveDir = new File(savePath);                if(!saveDir.exists()){                    saveDir.mkdir();                }                File file = new File(saveDir+File.separator+fileName);                    FileOutputStream fos = new FileOutputStream(file);                     fos.write(getData);                 if(fos!=null){                    fos.close();                  }                if(inputStream!=null){                    inputStream.close();                }                System.out.println("info:"+url+" download success");             }            /**            * 从输入流中获取字节数组            * @param inputStream            * @return            * @throws IOException            */            public static  byte[] readInputStream(InputStream inputStream) throws IOException {                  byte[] buffer = new byte[1024];                  int len = 0;                  ByteArrayOutputStream bos = new ByteArrayOutputStream();                  while((len = inputStream.read(buffer)) != -1) {                      bos.write(buffer, 0, len);                  }                  bos.close();                  return bos.toByteArray();              }          }

然后直接在Design界面右键按钮,进入操作界面,加入工具类就可以实现对应功能。

下载文件时输出下载信息到窗口

添加滚动条

JPane jp; JTextArea jt=new JTextArea(); JScrollPane js=new JScrollPane(jt);//分别设置水平和垂直滚动条自动出现js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);//分别设置水平和垂直滚动条总是出现js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//分别设置水平和垂直滚动条总是隐藏js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); jp.add(js);`JPane jp;``JTextArea jt=``new` `JTextArea();``JScrollPane js=``new` `JScrollPane(jt);``//分别设置水平和垂直滚动条自动出现``js.setHorizontalScrollBarPolicy(``JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);``js.setVerticalScrollBarPolicy(``JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);``//分别设置水平和垂直滚动条总是出现``js.setHorizontalScrollBarPolicy(``JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);``js.setVerticalScrollBarPolicy(``JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);``//分别设置水平和垂直滚动条总是隐藏``js.setHorizontalScrollBarPolicy(``JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);``js.setVerticalScrollBarPolicy(``JScrollPane.VERTICAL_SCROLLBAR_NEVER);``jp.add(js);`

不允许随意修改窗口大小

window.frame.setResizable(false);

作为Demo就先学习到这里,之后再进行额外补充