Java 自定义对象的Jung工厂
我是刚到jung的,我需要学习方面的帮助。我找了很多地方,但还没有找到一个循序渐进的指南。我正在尝试创建一个gui,只有当顶点选择了右菜单并输入了正确的名称时,它才会添加顶点Java 自定义对象的Jung工厂,java,user-interface,jung,Java,User Interface,Jung,我是刚到jung的,我需要学习方面的帮助。我找了很多地方,但还没有找到一个循序渐进的指南。我正在尝试创建一个gui,只有当顶点选择了右菜单并输入了正确的名称时,它才会添加顶点 import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JOptionPane; import javax.swing.JMenu; import javax.swing.J
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JMenu;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.algorithms.layout.StaticLayout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.visualization.VisualizationViewer;
import edu.uci.ics.jung.visualization.control.EditingModalGraphMouse;
import edu.uci.ics.jung.visualization.control.ModalGraphMouse;
import edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import org.apache.commons.collections15.Factory;
public class demo3 {
Graph<State,Transition> g;
Factory<State>stateList;
Factory<Transition>linelist;
ArrayList<State>states = new ArrayList<State>();
ArrayList<Transition>lines = new ArrayList<Transition>();
private static JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
initialize();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
demo3 sgv = new demo3();
Layout<State, Transition> layout = new StaticLayout(sgv.g);
layout.setSize(new Dimension(300,300));
VisualizationViewer<State,Transition> vv = new VisualizationViewer<State,Transition>(layout);
vv.setPreferredSize(new Dimension(350,350));
demo3 window = new demo3();
EditingModalGraphMouse gm = new EditingModalGraphMouse(vv.getRenderContext(),
sgv.stateList, sgv.linelist);
vv.setGraphMouse(gm);
gm.setMode(ModalGraphMouse.Mode.EDITING);
frame.getContentPane().add(vv);
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public demo3() {
g = new SparseMultigraph<State, Transition>();
stateList = new Factory<State>() {
public State create() {
State newState = new State();
states.add(newState);
return newState;
}
};
linelist = new Factory<Transition>(){
public Transition create(){
Transition line = new Transition();
lines.add(line);
return line;
}
};
}
/**
* Initialize the contents of the frame.
*/
private static void initialize() {;
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu mnAddStateOr = new JMenu("Add State or Transition");
menuBar.add(mnAddStateOr);
JPanel panel = new JPanel();
panel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String stateName = JOptionPane.showInputDialog("Enter the value of the state");
State newState = new State(Integer.parseInt(stateName));
}
});
frame.getContentPane().add(panel, BorderLayout.CENTER);
}
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JMenuBar;
导入javax.swing.JOptionPane;
导入javax.swing.JMenu;
导入javax.swing.JPanel;
导入java.awt.BorderLayout;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.util.ArrayList;
导入edu.uci.ics.jung.algorithms.layout.layout;
导入edu.uci.ics.jung.algorithms.layout.StaticLayout;
导入edu.uci.ics.jung.graph.graph;
导入edu.uci.ics.jung.graph.sparsemultraph;
导入edu.uci.ics.jung.visualization.VisualizationViewer;
导入edu.uci.ics.jung.visualization.control.EditingModalGraphMouse;
导入edu.uci.ics.jung.visualization.control.ModalGraphMouse;
导入edu.uci.ics.jung.visualization.decorators.ToStringLabeller;
导入java.awt.Dimension;
导入javax.swing.JFrame;
导入javax.swing.JMenu;
导入javax.swing.JMenuBar;
导入org.apache.commons.collections15.Factory;
公开课演示3{
图g;
工厂状态列表;
工厂线性主义者;
ArrayListState=新的ArrayList();
ArrayListlines=新的ArrayList();
私有静态JFrame;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
初始化();
invokeLater(新的Runnable(){
公开募捐{
试一试{
demo3 sgv=新的demo3();
布局=新的静态布局(sgv.g);
布局。设置尺寸(新尺寸(300300));
VisualizationViewer vv=新的VisualizationViewer(布局);
vv.setPreferredSize(新尺寸(350350));
demo3窗口=新的demo3();
EditingModalGraphMouse gm=新建EditingModalGraphMouse(vv.getRenderContext(),
sgv.stateList,sgv.linelist);
vv.setGraphMouse(gm);
gm.setMode(ModalGraphMouse.Mode.EDITING);
frame.getContentPane().add(vv);
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建应用程序。
*/
公众演示3(){
g=新的SparseMultraph();
stateList=新工厂(){
公共状态创建(){
State newState=新状态();
添加(新闻状态);
返回新闻状态;
}
};
linelist=新工厂(){
公共转换创建(){
转换线=新的转换();
行。添加(行);
回流线;
}
};
}
/**
*初始化框架的内容。
*/
私有静态void初始化();
frame=新的JFrame();
机架立根(100450300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar=新的JMenuBar();
frame.setJMenuBar(菜单栏);
JMenu mnAddStateOr=新JMenu(“添加状态或转换”);
菜单栏添加(mnaddstator);
JPanel面板=新的JPanel();
panel.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
String stateName=JOptionPane.showInputDialog(“输入状态值”);
State newState=新状态(Integer.parseInt(stateName));
}
});
frame.getContentPane().add(面板,BorderLayout.CENTER);
}
}
我需要知道如何根据每个圆圈输入的州名称为其添加标签。学习JUNG的任何技巧都会有所帮助。这听起来像是一个关于如何用Java编写代码的问题,而不是一个特定于JUNG的问题。至于学习JUNG的技巧,您可以尝试回答这个问题:这听起来像是关于如何用Java编写代码的问题,而不是特定于JUNG的问题。关于学习JUNG的技巧,您可以尝试以下问题的答案: