m using prefuse visulation,it's have one display class and this class have one saveImage(outPutStream, String jpg,double size);. now graph is converting ia jpg image properly.now my problem is tht,If graph is to large if it going out of screen thn ,i m getting jpg image on screen disply graph,m not getting the image of tht graph which going out of screen. this is my code
This is my code
Expand|Select|Wrap|Line Numbers
- import com.sun.corba.se.impl.orbutil.graph.Node;
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.Point;
- import java.awt.dnd.DragSource;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemEvent;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import java.awt.event.WindowListener;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.Iterator;
- import javax.crypto.NullCipher;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JOptionPane;
- import javax.swing.border.Border;
- import prefuse.Constants;
- import prefuse.Display;
- import prefuse.Visualization;
- import prefuse.action.Action;
- import prefuse.action.ActionList;
- import prefuse.action.RepaintAction;
- import prefuse.action.assignment.ColorAction;
- import prefuse.action.assignment.DataColorAction;
- import prefuse.action.layout.graph.ForceDirectedLayout;
- import prefuse.activity.Activity;
- import prefuse.activity.ActivityAdapter;
- import prefuse.activity.ActivityListener;
- import prefuse.controls.DragControl;
- import prefuse.controls.PanControl;
- import prefuse.controls.ToolTipControl;
- import prefuse.controls.ZoomControl;
- import prefuse.controls.FocusControl;
- import prefuse.controls.DragControl;
- import prefuse.data.Graph;
- import prefuse.data.Table;
- import prefuse.data.Tuple;
- import prefuse.data.io.DataIOException;
- import prefuse.data.io.GraphMLReader;
- import prefuse.data.io.GraphWriter;
- import prefuse.data.tuple.TupleSet;
- import prefuse.render.DefaultRendererFactory;
- import prefuse.render.LabelRenderer;
- import prefuse.render.ShapeRenderer;
- import prefuse.util.ColorLib;
- import prefuse.util.force.DragForce;
- import prefuse.visual.NodeItem;
- import prefuse.visual.VisualItem;
- import javax.swing.*;
- import java.awt.Container;
- import java.io.FileInputStream;
- import java.awt.Canvas;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowListener;
- import java.awt.Image;
- import java.util.Set;
- class DrawGrahp extends JFrame{
- private FileOutputStream fileOutPutStream=null;
- private JButton button;
- private JFrame frame;
- private Visualization vis;
- private LabelRenderer r;
- private ActionList layout;
- private ActionList color;
- private Display d ;
- private int a,b;
- private Graph graph = null;
- private JPanel jpanel;
- public DrawGrahp(){
- jpanel=new JPanel();
- button=new JButton("Save");
- Container con= getContentPane();
- jpanel.setLayout(null);
- button.setBounds(200,300,70,40);
- con.setSize(500,600);
- jpanel.setSize(1000,800);
- final int l= jpanel.getHeight();
- final int m=jpanel.getWidth();
- Canvas canvas=new Canvas();
- jpanel.add(button);
- con.setVisible(true);
- jpanel.setDoubleBuffered(true);
- jpanel.setPreferredSize(new Dimension(500,600));
- Point location=new Point();
- System.out.println("Panel Size"+ jpanel.getSize());
- System.out.println("panel height----------"+jpanel.getHeight()+"Panel width-------------"+jpanel.getWidth());
- con.add(jpanel,BorderLayout.NORTH);
- try {
- graph = new GraphMLReader().readGraph("\\JavaApplicationSwing\\graph.xml");
- } catch (DataIOException e ) {
- e.printStackTrace();
- System.err.println("Error loading graph. Exiting...");
- System.exit(1);
- }
- // nodes and edges are accessible as "graph.nodes" and "graph.edges"
- vis = new Visualization();
- vis.add("graph", graph);
- vis.setInteractive("graph.edges", null, false);
- // -- 3. the renderers and renderer factory ---------------------------
- r = new LabelRenderer("name");
- r.setRoundedCorner(8, 8); // round the corners
- ShapeRenderer sh=new ShapeRenderer();
- sh.star(2,3,4);
- sh.setBaseSize(4);
- // return our name label renderer as the default for all non-EdgeItems
- // includes straight line edges for EdgeItems by default
- vis.setRendererFactory(new DefaultRendererFactory(r));
- d = new Display(vis);
- // -- 4. the processing actions ---------------------------------------
- int[] palette = new int[] {
- ColorLib.rgb(255,180,180), ColorLib.rgb(190,190,255)
- };
- // map nominal data values to colors using our provided palette
- DataColorAction fill = new DataColorAction("graph.nodes", "gender",
- Constants.NOMINAL, VisualItem.FILLCOLOR, palette);
- ColorAction text = new ColorAction("graph.nodes",
- VisualItem.TEXTCOLOR, ColorLib.gray(0));
- if(text.equals("sriniwas"))
- {
- new ColorAction("graph.nodes",VisualItem.TEXTCOLOR, ColorLib.green(240));
- }
- ColorAction edges = new ColorAction("graph.edges",
- VisualItem.STROKECOLOR, ColorLib.gray(200));
- color = new ActionList();
- color.add(fill);
- color.add(text);
- color.add(edges);
- int aa;
- for(int i=0;i<color.size();i++){
- System.out.println("sdhfshdfhsf" +i);
- }
- layout = new ActionList(Activity.INFINITY);
- layout.add(new ForceDirectedLayout("graph"));
- layout.add(new RepaintAction());
- vis.putAction("color", color);
- vis.putAction("layout", layout);
- // -- 5. the display and interactive controls -------------------------
- d = new Display(vis);
- // d.setSize(1000, 600); // set display size
- d.addControlListener(new DragControl());
- d.addControlListener(new PanControl());
- d.addControlListener(new ZoomControl());
- d.addControlListener(new FrameFocusControl());
- // d.addControlListener(new ToolTipControl(){
- //d.addControlListener(new DragSource());
- // -- 6. launch the visualization -------------------------------------
- jpanel.add(d);
- vis.run("color");
- vis.run("layout");
- button.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- if(e.getSource()==button){
- try{
- jpanel.setSize(new Dimension(l*10,m*10));
- System.out.println("Panel Hieght"+jpanel.getHeight());
- System.out.println("Panel width"+jpanel.getWidth());
- Image img =d.getOffscreenBuffer();
- img.getSource();
- System.out.println("A fter increase Panel Size"+ jpanel.getSize());
- fileOutPutStream=new FileOutputStream("c:/sri/img.jpg");
- d.saveImage(fileOutPutStream,"jpg",2.6);
- fileOutPutStream.flush();
- fileOutPutStream.close();
- System.out.println("------------------"+jpanel.getHeight());
- }catch(IOException ex){ex.printStackTrace();}
- }
- }
- });
- }
- }
- public class DrawGrahpDemo{
- public static void main(String Arg[]){
- DrawGrahp drawGraph=new DrawGrahp();
- drawGraph.setVisible(true);
- drawGraph.setSize(500,600);
- drawGraph.setDefaultCloseOperation(JFrame.EXIT_ON_ CLOSE);
- }
- }