현재 위치 - 인적 자원 플랫폼망 - 미니프로그램 자료 - 프리퓨즈는 인터넷상의 사회적 관계를 시각화합니다. 선물이 있나요? 안내를 요청하세요. 고마워요.
프리퓨즈는 인터넷상의 사회적 관계를 시각화합니다. 선물이 있나요? 안내를 요청하세요. 고마워요.
Prefuse는 조금 더 복잡하며 모든 종류의 시각적 다이어그램을 만들 수 있습니다.

여기에 제가 얼마 전에 작성한 애플릿과 주요 코드에 대한 코멘트가 있습니다. 도움이 되길 바랍니다.

질문이 있으시면 Baidu 안녕하세요.

javax . swing . jframe;

Import Java . awt . colour;

Import Java . awt . geom . rectangle 2D;

프리퓨즈 임포트. Constant;

프리퓨즈 가져오기. 디스플레이;

프리퓨즈 가져오기. 시각화;

임포트 프리퓨즈 . action . *;

import prefuse . action . assignment . color action;

import pre fuse . action . assignment . 데이터 색상 액션;

임포트 사전 퓨즈 . action . layout . graph . forcedirectedlayout;

import pre fuse . activity . activity;

임포트 사전 퓨즈 . controls . *;

사전 퓨즈 가져오기 . data . *;

사전 퓨즈 가져오기 . render . *;

임포트 프리퓨즈 . util . *;

임포트 프리퓨즈 . util . display . display lib;

임포트 프리퓨즈 . visual . *;

public class Prefuse_Test extends JFrame{

visual vis

그래프 Graph = new Graph();

디스플레이 Display = new Display();

public Prefuse _ Test (String window _ name)

{

Table t 1 = new Table();

t1.addColumn("Person", string . class);

t1.addColumn("Titel", string . class);

t1.addColumn("FirstName", string . class);

t1.addColumn("SecondName", string . class);

t1.addColumn("Gender", string . class);

t1.addColumn("Birthday", string . class);

t1.addColumn("Department", string . class);

t1.addColumn("Function", string . class);

t1.addColumn("Boss", string . class);

t1.addColumn("Telephon", string . class);

t1.addColumn("Handy", string . class);

t1.addColumn("Tele_Home", string . class);

t 1 . addrow();

t 1.setString(0, 0, "Tom Hands");

t 1.setString(0, 1, " dr . ");

t1.setString(0, 2, " Tom ");

t1.setString(0, 3, " Hans ");

t1.setString(0, 4, " male ");

t1. setString(0, 5, " 1978-05-09 ");

t1.setString(0, 6, "Marketing");

t1.setString(0, 8, "Cotton Tiger ");

t1.setString(0, 9, " 0194537653 ");

t1.setString(0, 10, " 0191345667828 ");

//***Start:그래프 데이터 초기화

Graph = new Graph();

graph.addColumn("data", string . class);

graph.addColumn("column_name", string . class);

graph.addColumn("id", int . class);

graph.addColumn("toShow", string . class);

for(int I = 0; I& ltt 1 . getcolumncount(); i++)

{

node n = graph . add node();

n.setString("data", String.valueOf(t1.get(0, I)));

n.setString("column_name", t 1 . get column name(I));

n.setInt("id", I);

n.setString("toShow", n . get(1)+":\ n"+n . get(0));

}

for(int I = 1; I& ltt 1 . getcolumncount(); i++)

그래프.addEdge(0, I);

//* *Start:길이가 다른 에지

table EDG 1 = graph . getedgetable();

system . out . println(graph . getedgecount()+" "+EDG 1 . getrowcount());

edg1.addColumn("length", float . class);

for(int I = 0; I& ltEDG 1 . getrowcount(); i++)

{

edg1.setFloat(i, "length", 50 + I * 20);

system . out . println(" EDG 1 . get(I, 0):"+edg1.get(i, 0)+" edg1.get(i, 1):"+edg1.get(i, 1)+

" edg1.get(i, 6):"+edg1.get(i, 6)+" "+EDG 1 . get column name(6)+" I:"+I+" "+EDG 1 . getrowcount());

}

//* * * End:다양한 길이의 가장자리

//******End:그래프 데이터 초기화

//* * Start:레이블

label renderer lr = new label renderer(" to show");

lr.setRoundedCorner(8, 8);

//* * * * End:label

//* * Start:EdgeShape

EdgeRenderer er = new EdgeRenderer(Constant. EdgeTypeLine, Constant. Edge_Arrow_None);

//* * * End:EdgeShape

vis = new visualisation();

vis.add("graph", graph);

vis . setrendererfactory(new DefaultRendererFactory(lr, er));

DataColorAction fill = new DataColorAction(" graph . nodes", " id",

상수. 명목상, 시각적으로 채우기 색상);

색상 액션 텍스트 색상 = 새 색상 액션(" 그래프 . nodes",

시각적 항목. textCOLOR, colourlib . GRAY(0));

색상 액션 가장자리 color = 새 색상 액션(" graph . edges",

비주얼 아이템. STROKECOLOR, colourlib . GRAY(200));

ActionList color = new ActionList();

colour.add(fill);

colour . add(text colour);

colour . add(가장자리 색상);

//****End:데이터 색상

//ForceDirectedLayout:가장자리 길이 정의

액션 목록 레이아웃 = 새 액션 목록(Activity. 무한대);

>MyForceDirectedLayout fdl = new MyForceDirectedLayout(" graph ", 170);

layout . add(fdl);

layout . add(new repaint action());

vis.putAction("color", color);

vis.putAction("layout", layout);

display_init ().

이 . setdefaultcloseoperation(JFrame. EXIT _ ON _ CLOSE);

this . setitle(window _ name);

this.setSize(800, 800);

this.add(display);

this . setresizable(false);

이 . set visible(true);

}

public void display_init()

{

display . set visualisation(this . VIS);

display . sethighquality(true);

display.setSize(800, 800);

display.setBackground(colour. White);

display.addControlListener(new focus control(1));

display . addcontrollistener(new drag control(false, true));

display . addcontrollistener(new pan control());

display . addcontrollistener(new WheelZoomControl());

final zoomfitcontrol zfc = new zoomfitcontrol(this . vis . all _ ITEMS, 40, 2000, Control. right_mouse_button);

display . addcontrollistener(zfc);

display . addcontrollistener(new neighbor highlight control());

}

public void ZoomToFitByStart()

{

// zoom fit

boolean b = true

If (!display . istranforminprogress() & amp; & ampb)

{

b = false;

string m _ group = this . vis . all _ ITEMS;

long m _ duration = 2000

직사각형 2D bounds = this . vis . get bounds(m _ group);

GraphicsLib.expand(bounds, 190+(int)(1/display . get scale()));

display lib . fitviewtoBounds(display, bounds, m _ duration);

}

}

공개 static void main(String[] args) {

Prefuse _ Test frame = new Prefuse _. Test(" Prefuse _ Test ");

frame . vis . run(" color ");

frame . vis . run(" layout ");

frame . ZoomToFitByStart();

}

}

MyForceDirectedLayout 클래스는 ForceDirectedLayout을 확장

{

float f;<

public MyForceDirectedLayout(string graphic){

hyper(graphic);

}

public MyForceDirectedLayout(string graphic, float f) {

hyper(graphic);

this.f = f

}

@Override

보호된 float getSpringLength(EdgeItem e)

{

float f = (float)0;

f = e.canGetFloat("length")?e . get float(" length"):200;

Returns (float) f;

}

}