十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可视化编程就是GUI
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、两当网站维护、网站推广。
第一步,引包:
一般引包:import javax.swing.*;
import java.awt.*;
第二步:代码
例子:将以下代码保存为test.java文件,然后用jdk提供的编译器编译运行
import javax.swing.*;
import java.awt.*;
public class test extends JFrame(){
//创建组件
JButton jb=null;
//构造函数
public test(){
//实例化组件
jb=new JButton("按钮");
//添加组件
this.add(jb);
//布局
//设置窗口在屏幕上的位置、大小和可见性
this.setLocation(100,100);
this.setSize(650,550);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(){
new test();
}
}
更多java可视化编程,可以到这个网站上去下载sun公司开发的文档tutorial
网站是:
解压后,在tutorial\uiswing\components文件夹目录下的链接都是讲的可视化编程,不过都是英文版的。中文版的,我这里没有,有需要的自己找一下
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class awttest
{
TextField id,pw;
TextField printid,printpw;
public awttest(){
Frame f=new Frame("用户登录");
f.setLayout(new GridLayout(4,2));
id=new TextField("输入用户名",10);
pw=new TextField(10);
pw.setEchoChar('*');
f.add(new Label("用户名:",Label.CENTER));
f.add(id);
f.add(new Label("密码:",Label.CENTER));
f.add(pw);
Button b1=new Button("登陆");
Button b2=new Button("取消");
f.add(b1);
f.add(b2);
String str1=id.getText();
String str2=pw.getText();
printid=new TextField(str1,10);
printpw=new TextField(str2,10);
f.add(printid);
f.add(printpw);
f.pack();
printid.setBackground(new Color(220,0,0));
printpw.setBackground(new Color(220,0,0));
f.setSize(250,120);
f.setVisible(true);
b1.addActionListener(new ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来
public void actionPerformed(ActionEvent e) {
printid.setText(id.getText());
printpw.setText(pw.getText());
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent args)
{
System.exit(0);
}
}
);
}
public static void main(String[] args){
new awttest();
}
}
OK!!可以运行
使用之前
在开始使用 ThingJS 之前,需要先了解JavaScript,我们假设您已经掌握JS。
创建项目
创建项目之前需登录ThingJS账号,如果您尚未登录账号或页面出现“登录已过期,请重新登录!”的提示,为保证项目的正确保存及运行,请您在账号登录之后再创建项目。您可通过以下三种方式创建项目:
选择菜单区域的“文件 - 新建项目”选项
点击工具栏“新建”图标,图标如右图所示:
请点击输入图片描述
请点击输入图片描述
使用快捷键“Ctrl+P”
编辑项目
在线开发为用户提供了相应的快捷代码和官方示例,如果你正在用 ThingJS在线开发页面,可以通过以下两种方式来编辑项目:
点击在线开发页面菜单区域的快捷代码选项中的子项,编辑区将自动插入相应代码
请点击输入图片描述
选择在线开发官方示例中的其中任意一个示例,点击相应示例,编辑区将显示相应代码
后续操作详见 在线开发 - 应用开发 - 在线开发网页链接
保存项目
可通过以下四种方式保存项目:
选择菜单区域的“文件 - 保存”选项
点击工具栏“保存”图标,图标如右图所示:
请点击输入图片描述
请点击输入图片描述
使用快捷键“Ctrl+S”
运行项目
在线开发环境提供了以下几种方式运行项目:
使用快捷方式“Ctrl+R/Enter”或点击工具栏中的“运行”图标,3d容器区域将运行编辑器相应的代码。图标如右图所示:
请点击输入图片描述
请点击输入图片描述
选择菜单区域的“工具 - 设置”选型,出现的设置面板,点击开启“自动保存执行”
请点击输入图片描述
可以 javaSwing 编程 给你个例子
package com.xu.pcchart;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.sql.Date;
import java.text.SimpleDateFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Clinet extends JFrame implements Runnable, ActionListener
{
private static final long serialVersionUID = 1L;
public static final int PORT = 8521;
//声明套接字对象
Socket socket;
//声明线程对象
Thread thread1;
//声明客户端数据输入输出流
DataInputStream in;
DataOutputStream out;
//是否登录的标记
boolean flag = false;
//声明字符串,name存储用户名,chat_txt存储发送的信息,chat_in存储从服务器接收到的信息
String name,chat_txt,chat_in;
String ip = null;
/**
* 服务器端主程序负责界面以及服务端主线程ServerThread的启动
* 服务主线程ServerThread又产生BroadCast及ClientThread线程
*/
//建立服务器端主界面所用到的布局方式
BorderLayout borderlayout1 = new BorderLayout();
BorderLayout borderlayout2 = new BorderLayout();
BorderLayout borderlayout3 = new BorderLayout();
//创建面板
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
JPanel jPanel4 = new JPanel();
//创建按钮
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton("发送");
JScrollPane jScrollpanel = new JScrollPane();
//创建服务器端接收信息文本框
static JTextArea jTextArea1 = new JTextArea();
boolean bool = false,start = false;
JLabel usernamelable = new JLabel("用户名");
JTextField usernametext = new JTextField(10);
JTextField sendmsgText = new JTextField(20);
JLabel lable = new JLabel("服务器地址");
JTextField addresslable =new JTextField("192.168.1.198",10);
//声明ServerThread线程对象
ServerThread serverThread;
Thread thread;
//构造函数 ,生成客户端界面
public Clinet()
{
//设置内容分面板布局方式
getContentPane().setLayout(borderlayout1);
//初始化组件
jButton1.setText("进入聊天室");
jButton1.addActionListener(this);
jButton2.setText("退出聊天室");
jButton2.addActionListener(this);
jButton3.addActionListener(this);
//初始化JPanel1面板对象,并向其加入组件
this.getContentPane().add(jPanel1,java.awt.BorderLayout.NORTH);
jPanel1.add(usernamelable);
jPanel1.add(usernametext);
jPanel1.add(jButton1);
jPanel1.add(jButton2);
//初始化jpanel2面板对象,并向其加入组件
jTextArea1.setText("");
jPanel2.setLayout(borderlayout2);
jPanel2.add(jScrollpanel,java.awt.BorderLayout.CENTER);
jScrollpanel.getViewport().add(jTextArea1);
this.getContentPane().add(jPanel2,java.awt.BorderLayout.CENTER);
jPanel4.add(lable);
jPanel4.add(addresslable);
getContentPane().add(jPanel4,java.awt.BorderLayout.EAST);
getContentPane().add(jPanel3,java.awt.BorderLayout.SOUTH);
jPanel3.add(sendmsgText);
jPanel3.add(jButton3);
this.setSize(400,400);
this.setVisible(true);
}
public static void main(String[] args)
{
Clinet server = new Clinet ();
server.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//界面按钮的事件处理
@Override
public void actionPerformed(ActionEvent e)
{
//进入聊天室的按钮处理
if(e.getSource() == jButton1)
{
//获取用户名
name = usernametext.getText();
//获取服务器IP
ip = addresslable.getText();
//判断用户名是否有效及ip是否为空
if(name!="用户名输入"ip != null)
{
try
{
//创建socket对象
socket = new Socket(ip,PORT);
//创建客户端数据输入输出流,用于对服务器端发送或接收数据
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
Date now = new Date(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
String nowStr = format.format(now);
out.writeUTF("$$"+name+" "+nowStr+" 上线了!");
} catch (Exception e2)
{
e2.printStackTrace();
}
thread = new Thread(this);
//开启线程,监听服务器端是否有消息
thread.start();
//说明已经登录成功
flag = true;
}
}
//发送按钮的处理
else if(e.getSource() == jButton3)
{
//获取客户端输入的发言内容
chat_txt = sendmsgText.getText();
if(chat_txt != null)
{
Date now = new Date(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
String nowStr = format.format(now);
//发言 向服务器发送发言的信息
try
{
out.writeUTF("^-^"+usernametext.getText()+" "+nowStr+" 说\n"+chat_txt);
} catch (Exception e2)
{
// TODO: handle exception
}
}
else
{
try
{
out.writeUTF("亲说话");;
} catch (Exception e2)
{
// TODO: handle exception
}
}
}
//退出聊天室按钮事件处理
else if(e.getSource() == jButton2)
{
if(flag == true)
{
try
{
out.writeUTF("##"+name+"下线了!");
out.close();
in.close();
socket.close();
} catch (Exception e2)
{
// TODO: handle exception
}
}
flag = false;
this.setVisible(false);
}
}
//客户端线程启动后的动作
@Override
public void run()
{
//循环执行 作用是一直监听服务器端是否有消息
while(true)
{
try
{
//读取服务器发送来的数据
chat_in = in.readUTF();
//将消息显示在客户端的对话窗口中
jTextArea1.append(chat_in+"\n\n");
} catch (Exception e)
{
// TODO: handle exception
}
}
}
}
运行结果
具体介绍请看java的 JDK 文档
准备工作:
1、下载JDK;
2、下载Eclipse;
3、下载相应的EMF、GEF、VE;
注意:三个插件的版本要和Eclipse的版本配套才能正确使用,至于配套的说明请参考下载页面的说明
开始安装:
1、安装JDK;
这个比较容易,标准的Windows安装程序,下一步,再下一步即可,安装完成后,也不需要重启。
2、安装Eclipse;
Eclipse是绿色软件,不需要安装,只需要解压缩,然后即可运行。
为了说明方便,我把它解压缩到C盘根目录下,得到C:\eclipse目录,运行C:\eclipse\eclipse.exe即可。
注意:下面的安装,需要先关闭eclipse程序。
3、安装EMF、GEF、VE;
对于Eclipse来说,这些都是它的插件,所以,安装方法都是一样的。插件下载地址
A、在C:\eclipse目录下,建立四个子目录:C:\eclipse\emf、C:\eclipse\gef、C:\eclipse\ve、C:\eclipse\links;
B、把下载的EMF、GEF、VE都解压缩到相应的目录中,即:把EMF压缩包解压缩到C:\eclipse\emf中,得到C:\eclipse\emf\eclipse目录,以此类推,完成GEF、VE的解压缩;
C、在C:\eclipse\links目录下,新建一个文本文件,名字可随便取,如:link.txt。
然后在link.txt文件中,加入以下三行文字:
path=emf
path=gef
path=VE
注意:这里用的是相对路径,也可以把EMF、GEF、VE解压缩到其它地方,再用绝对路径即可。
再注意:绝对路径是用 “/” 或者 “\\” 分隔,而不是“\”
补充知识:为什么ve需要emf和gef:
Visual Editor 所利用的最为明显的工具是 GEF,即图形化编辑框架(Graphical Editing
Framework)。GEF 建立于本地 Eclipse 图形化工具集 SWT
之上,以使得开发一个图形化编辑器或者所见即所得文本编辑器更为容易。如果您熟悉 SWT (或者
AWT/Swing,在这方面它们是类似的)中的图形原语,那么您会知道绘制和处理任意的形状(比如矩形、箭头和椭圆)是比较困难的,更不用说管理它们之间的关系以及它们所代表的数据模型了。
GEF 被划分为两个部分:第一部分是 Draw2D 插件,这是一个轻量级的绘图和呈现包,用于帮助您绘制图形。第二部分是 GEF 插件,除了其他工具以外,这一部分中还增加了选择和创建工具、工具选项板,以及用于在数据模型和视图之间进行映射的控制器框架。
GEF
是一个模型无关的框架,但是作为 Visual Editor (以及其他生成代码的图形化工具)的一部分,它在后台使用 Eclipse
建模框架(Eclipse Modeling Framework, EMF),以在模型、Java 类和图形化表示之间进行映射,其中模型是使用
XML 元数据交换(XML Metadata Interchange, XMI)在内部存储的。EMF
的重要特性之一是它确保所有这些映射都是一对一的;所以尽管 XMI
可以被认为是模型的标准表示,但是在代码和图形之间来回切换并不会丢失任何信息。这就是为什么 Visual Editor
只需要保存模型的一种表示(即 Java 源代码),以及开发人员可以自由地在图形化编辑器之外编辑该源代码的原因。
4、安装完毕,再次运行Eclipse,它启动时会自动查找links目录下所有的文本文件,并加载其中path指向的所有插件,这里当然包括VE。
A、如果不能确定是否已经加载,可选择菜单Help-Software Updates-Manage Configuration,打开Product Configuration窗体,在其左边的树形栏里,可以看到已加载的插件。
B、如果加载没有成功,可以试试用Eclipse -clear来运行程序。
C、如果加载仍没有成功,可以试试删除C:\eclipse\configuration下的内容,仅保留config.ini文件。然后再用Eclipse来运行程序。
================================================================
启动eclipse平台。刚开始,你可能觉得eclipse并没有什么变化。先别急,请新建一个项目,点击"文件"菜单下的"新建"子菜单,选择并建立一个新的"java项目"。然后在工具栏上的"新建Java类" 图标上,点击右边的小箭头,将展开如下图的菜单:
在此菜单上,多了一个"Visual Calss"的子菜单,这就是进入Visual Editor的入口之一。点击"Visual Class",就会弹出创建GUI程序的对话框,选择完毕后,就会进入可视化编辑画面:
用VE写个Hello:
1、新建一个项目;
File-New-Project...,选择“Java Project”,然后Next,输入一个项目名字:Hello,其它全部默认,最后回车,或者点击“Finish”完成。
2、设置SWT库;
A、选择项目Hello,右键菜单,打开Properties对话框。
B、选择左边树形中的Java Build Path,在其设置页中,选择Libraries页,点击“Add Library...”;
C、在打开的Add Library对话框里,选择Standard Widget Toolkit(SWT),Next;
D、在打开的SWT Library Options对话框中,勾选上“Include support for JFace library”,Finish即可。
E、回到Properties对话框,OK即可。
3、新建Hellworld.java文件;
A、选择项目Hello,右键菜单,New-Other...(或者点击工具栏里新建图标),打开Select a wizard对话框,选择Java/Visual Class,Next;
B、在打开的Java Visual Class对话框中,
在Package里,输入:com.cnblogs.pan;
在Name里,输入:Helloworld;
在Style里,选择SWT/Shell;
勾选上public static void main(String[] args);
最后Finish。
4、到了这一步,应该就可以看到窗体了,那些控件都在Palette里,点开就能看到了。
A、在窗体上右击,选择Set Layout,再选择null;(此处为个人习惯)
B、从Palette里,选中一个Button,并在窗体任意位置画一个Button,在下面的Properties窗口里,设置其text为ClickMe;
C、选中该按钮,右击选择Events-Add Event,在打开的对话框中,选择左边的widgetSelected,Finish。
D、这时,光标会自动定位到程序相应的位置,我们在程序里加入下面语句:
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
System.out.println("widgetSelected()");
MessageDialog.openInformation(null, "Hello", "Hello World!");//加入这条语句
}
E、保存程序,点击菜单Run-Run As-Java Application,呵呵,跟全世界打个招呼吧!
有的,Jbuilder 和NetBeans都是可以进行可视化的界面操作的。
另外,可视化的强大工具是SWT,在eclipse内部有存放。不过这个需要专业人员来进行。
建议不要偷懒,从基础开始学,一步一步的来。
谢谢。