2016-04-23 39 views
0

我试图改变这是一个graphstream但它的失败,让即使是很小的内图的大小。Graphstream内小的JFrame

这是我的代码。起初,我不能设置窗口标题,所以我唯一的选择是创建一个JFRAMe并将视图嵌入其中。所以,如果有一个选项来设置图的标题,我将不胜感激。

这是我的代码。

public class Clicks implements ViewerListener { 
    protected boolean loop = true; 

    public static void main(String args[]) throws InterruptedException { 
     new Clicks(); 
    } 
    public Clicks() throws InterruptedException { 
      System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); 
     // We do as usual to display a graph. This 
     // connect the graph outputs to the viewer. 
     // The viewer is a sink of the graph. 
     Graph graph = new MultiGraph("Clicks"); 
       graph.addAttribute("ui.stylesheet", "node#D{ fill-color:red; }node{ stroke-mode: plain;size:20;text-size:30;stroke-color:#333333;text-background-color:#FFF;text-background-mode:plain;text-alignment:above;}"); 




       Node D = graph.addNode("D"); 
       Node J = graph.addNode("J"); 
     Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD); 
       View view = viewer.addDefaultView(false); 


       JFrame frame = new JFrame("title"); 
       frame.setSize(1000, 1000); 
       frame.add((Component) view); 
       frame.pack(); 
       frame.setVisible(true); 

       ViewerPipe fromViewer = viewer.newViewerPipe(); 
     fromViewer.addViewerListener(this); 
     fromViewer.addSink(graph); 



     while(loop) { 
      fromViewer.blockingPump();// or fromViewer.blockingPump(); in the nightly builds 
     } 
    } 

    public void viewClosed(String id) { 
     loop = false; 
    } 

    public void buttonPushed(String id) { 

    } 

    public void buttonReleased(String id) { 
     System.out.println("Button released on node "+id); 
    } 
} 

@edit

即使在应用提出的更改,它没有工作。

public clicks()throws InterruptedException System.setProperty(“org.graphstream.ui.renderer”,“org.graphstream.ui.j2dviewer.J2DGraphRenderer”); //我们照常显示图表。这 //将图形输出连接到查看器。 //查看器是图的接收器。 Graph graph = new MultiGraph(“Clicks”); graph.addAttribute( “ui.stylesheet”,“节点#d {补色:红色;} {节点冲程模式:平纹;大小:20;文字大小:30;中风色:#333333;文本的背景色:#FFF;文本背景模式:平纹;文本对齐:上面;}“);

 Node D = graph.addNode("D"); 
     Node J = graph.addNode("J"); 
Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD); 
     View view = viewer.addDefaultView(false); 


     JFrame frame = new JFrame("title"); 
     frame.add((Component) view); 


     ViewerPipe fromViewer = viewer.newViewerPipe(); 
fromViewer.addViewerListener(this); 
fromViewer.addSink(graph); 

     frame.pack(); 
     frame.setVisible(true); 


while(loop) { 
    fromViewer.blockingPump();// or fromViewer.blockingPump(); in the nightly builds 
} 

}

当我运行它,窗口尺寸小,我必须手动调整其大小。

请告诉我这个问题?

回答

1

当我运行它,窗口尺寸小,我必须手动调整其大小。

frame.pack(); 
frame.setVisible(true); 

ViewerPipe fromViewer = viewer.newViewerPipe(); 
fromViewer.addViewerListener(this); 
fromViewer.addSink(graph); 

你需要的所有组件框架加拍前框可见。

因此,代码应该是:

ViewerPipe fromViewer = viewer.newViewerPipe(); 
fromViewer.addViewerListener(this); 
fromViewer.addSink(graph); 

frame.pack(); 
frame.setVisible(true); 

而且没有必要对下面的行:

//frame.setSize(1000, 1000); 

pack()方法将重置基于所有组分的优选尺寸的大小添加。

+0

还是一样,甚至改变对你提出什么代码。 http://prntscr.com/avvbhw –

+0

我已经删除了包调用,因此它要具有宽度IVE集。它解决了我的问题,很高兴知道这个包。 –