- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗯,我有以下架构:
扩展 JFrame 的 Java 类,实例化另一个类包含我的图表,该图表返回空白屏幕。
第二个普通类,其内部有 main 方法,调用包含我的图表的同一类返回正常图表。
现在,为什么 JFrame 类返回空白图?
我的图形类代码。
public class grafoComparacao implements ViewerListener {
private List<Comparados> integralizacoesComparadas;
private Viewer viewer;
private Graph graph;
private View view;
protected boolean loop = true;
public grafoComparacao(List<Comparados> listaComparados) throws HeadlessException, InterruptedException {
System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
this.integralizacoesComparadas = listaComparados;
graph = new MultiGraph("clicks");
graph.addAttribute("ui.stylesheet", GraphsStreamStylesheet.stylesheet);
adicionaNodes(graph);
viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
viewer.enableAutoLayout();
view = viewer.addDefaultView(false);
JFrame frame = new JFrame("Comparação de catálogos");
frame.add((Component) view);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
ViewerPipe fromViewer = viewer.newViewerPipe();
fromViewer.addViewerListener(this);
fromViewer.addSink(graph);
frame.setVisible(true);
while(loop) {
fromViewer.pump();
}
}
//this actually works too.
// public static void main(String[] args) throws HeadlessException, InterruptedException{
// Control.Controller ctrl = new Controller();
// JFileChooser escolherAlunos = new JFileChooser();
// escolherAlunos.setMultiSelectionEnabled(true);
// escolherAlunos.showOpenDialog(null);
// File[] integralzacoes = escolherAlunos.getSelectedFiles();
// List<Comparados> integralizacoesComparadas = ctrl.geraComparacaoIntegralizacoes(integralzacoes);
// try {
// grafoComparacao comparacao = new grafoComparacao(integralizacoesComparadas);
// } catch (HeadlessException ex) {
// Logger.getLogger(FrmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
// } catch (InterruptedException ex) {
// Logger.getLogger(FrmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
// }
// new grafoComparacao(integralizacoesComparadas);
// }
@Override
public void viewClosed(String string) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void buttonPushed(String string) {
}
@Override
public void buttonReleased(String string) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private void adicionaNodes(Graph graph) {
//function that populate my graph
}
}
大多数人会说,为什么要在这里创建 JPANEL?我没有找到如何设置它的默认大小,但即使从内部删除 jpanel,它也不起作用,显示一个空白查看器,没有任何异常或其他情况。
这是我调用类(class)做我必须做的事情的地方。
JFileChooser escolherAlunos = new JFileChooser();
escolherAlunos.setMultiSelectionEnabled(true);
escolherAlunos.showOpenDialog(null);
File[] integralzacoes = escolherAlunos.getSelectedFiles();
List<Comparados> integralizacoesComparadas = ctrl.geraComparacaoIntegralizacoes(integralzacoes);
try {
grafoComparacao comparacao = new grafoComparacao(integralizacoesComparadas); // heres the graph call.
} catch (HeadlessException ex) {
Logger.getLogger(FrmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(FrmPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
创建 SwingWorker 后,图形已呈现,但用户交互消失了。
Swing Worker,这里我只是收集一些信息,让图形类能够处理信息。
public class VisualizacaoWorker extends SwingWorker<Void, Void>{
private List<Comparados> listao;
public VisualizacaoWorker(List<Comparados> lista){
this.listao = lista;
}
@Override
protected Void doInBackground() throws Exception {
GrafoComparacao gf = new GrafoComparacao(this.listao);
return null;
}
}
在这里,它被称为。
JFileChooser escolherAlunos = new JFileChooser();
escolherAlunos.setMultiSelectionEnabled(true);
escolherAlunos.showOpenDialog(null);
File[] integralzacoes = escolherAlunos.getSelectedFiles();
List<Comparados> integralizacoesComparadas = ctrl.geraComparacaoIntegralizacoes(integralzacoes);
VisualizacaoWorker visualizacaoWorker = new VisualizacaoWorker(integralizacoesComparadas);
visualizacaoWorker.execute();
最佳答案
首先,类名应该以大写字符开头。 “grafoComparacao”应为 GrafoComparacao
。
Now, why the class that is a JFrame returns a blank graph?
我猜测您的 GrafoComparacao
类是在某些监听器代码中创建的,这意味着该代码在负责绘制 GUI 的事件调度线程上执行。
while(loop)
{
fromViewer.pump();
}
这看起来像是在 EDT 上执行的阻塞代码,意味着您正在使用无限循环,这意味着代码永远不会完成执行,因此 GUI 永远无法响应事件或重新绘制自身。
该代码应该在单独的线程(可能是 SwingWorker
)上执行,以便 EDT 可以自由地响应事件并重新绘制自身。
阅读 Swing 教程中关于 Concurrency in Swing 的部分有关 EDT 和 SwingWorker 的更多信息。
关于java - Graphstream View 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899115/
我正在尝试创建一个用于演示图形和算法的工具。为此,我找到了 GraphStream 库。我已阅读其所有文档和教程,但我无法使这一件事发挥作用。我正在尝试将图形放入我的自定义 GUI(带有按钮的左侧菜单
我正在我的 Java 项目中工作,我正在使用 GraphStream 库来直观地表示图形。我的问题是如何将图像放在图表后面?我想要一张图像作为我的图表的背景。 最佳答案 setBackLayerRen
我在项目中使用 GraphStream,我的问题是我想检索连接组件的列表,但我只能获取它们的计数,或者最多只能获取它们的 Id。 我已经尝试过这段代码,但它没有返回任何内容: ConnectedCom
我是否可以使用 graphstream 折叠图中一定数量的节点?我尝试添加 ui.hide 属性,但这不是我想要的。理想情况下,我希望在第一个折叠的节点上有一个 + 号,然后当我单击 + 号时,应该会
如果有多个边缘,我正在努力显示两个节点上的两条边缘。我正在关注这个example 。但我遇到了一个异常(exception): Exception in thread "main" java.lang
我已经根据节点中的某些属性创建了每个图形具有不同颜色的图形。这是我当前的图表 是否可以将具有相同颜色的节点靠近放置?我该如何实现呢? 最佳答案 我正在寻找类似的功能,并遇到了查看器 ( http://
我正在使用 graphstream 进行一些简单的图形可视化。我发现大多数文档都很有用且易于阅读,但我无法找到一种方法来确保节点不会靠得太近。 我的图表中的节点以数字作为标签,我想确保节点不会重叠和相
我正在使用 graphstream 创建一个图形,并使用 FileSinkSVG2 将结果写入 svg 文件。效果很好。唯一的问题是边缘末端的箭头没有按照 css 定义那样显示。有什么建议么?这是我的
我正在使用 org.graphstream.graph 库使用 graphstream 绘制图形(带经纬度)。 import org.graphstream.graph.*; 下面是显示图表的代码。
在 GraphStream 可视化中,图形可以是密集的。 enableAutoLayout 方法提供了 Graph 的全局可视化,因此需要进行缩放。如何放大 GraphStream View ? Gr
我正在研究GraphStream java 的库。但我在这里面临一个问题。当我尝试从数据库表中获取节点时,它在 JPanel 上显示数据和边缘,但首先,当程序启动时,它将所有节点收集在一个地方,如下图
如果 Graphstream 图中的某些节点有一些固定坐标,我可以让 Graphstream “填补空白”并自动布局那些没有手动指定位置的节点吗? 例如: Node n1 = graph.addNod
嗯,我有以下架构: 扩展 JFrame 的 Java 类,实例化另一个类包含我的图表,该图表返回空白屏幕。 第二个普通类,其内部有 main 方法,调用包含我的图表的同一类返回正常图表。 现在,为什么
我在 GraphStream 中有一个项目,我需要在其中更改图形的节点坐标。 这些坐标存储在名为“xy”的变量中 完成这项工作的函数应该是 setAttribute() 或 addAttribute(
我想创建代表人们之间业务交互的图表,并且我使用 Java 的 GraphStream 库。我写了这样的代码: EventQueue.invokeLater(new Runnable()
可以使用 Viewer#enableAutoLayout() 在 GraphStream 中激活布局过程.不幸的是,这个过程会像节点拖动一样篡改每个用户交互。 是否可以自动布局一次然后停止? 我曾尝试
因为我找不到任何特定的地方来讨论这个,我想我会在这里发帖......我正在使用 graphstream 1.1 ( http://graphstream-project.org/ ),一个用于 jav
我想在 GraphStream 中对图形进行建模并使用其查看器进行渲染,但我的节点需要具有不同的输入和输出端口(最好在左侧和右侧)分别是节点盒的),并且边应该与这些端口而不是节点中心连接。 这在Gra
有什么方法可以增加 Graphstream 的边缘宽度吗? 我尝试过的: edge.addAttribute("ui.style", "stroke-width: 30px; fill-color:
我想使用 GraphStream 生成静态图。有什么建议的解决方案吗? 我从 DGS 文件(从其他模型生成)读取输入数据。因为节点的数量不是每次都固定的,我不想手动指定每个节点的每个位置。目前我可以使
我是一名优秀的程序员,十分优秀!