Java 自定义对象的Jung工厂

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

我是刚到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.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的技巧,您可以尝试以下问题的答案: