java编程中结果的可视化表示
如何将这棵树直接可视化显示出来?有没有什么类似的插件实现 ? 展开
可以 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 文档