Java:在运行时在另一个面板中添加面板以适应可见区域

标签 java swing jung

在我的应用程序中,我想使用 JUNG 显示生成的图表。它生成 JPanel 对象作为输出。所以,我认为这只是向面板添加一个组件的问题。但该图表是在其父面板之外绘制的。截屏: screenshot 如何限制图形仅在可见区域内? 我用来将图形添加到面板的代码是这样的(边框是为了让我看到面板边框,尽管由于某种原因它没有显示):

    Layout<Object, String> layout = new CircleLayout<Object, String> (graphProvider.getGraph());
    layout.setSize(panel.getMarketGraphPane().getPreferredSize());
    BasicVisualizationServer<Object,String> graphPanel = new BasicVisualizationServer<Object,String>(layout);
    graphPanel.setBorder(new EtchedBorder());
    graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());
    panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
    panel.getMarketGraphPane().revalidate();

最佳答案

实际图像的信息太少

1 取决于

  • Size 返回什么(使用 JUNG 生成图表),您是否也在那里设置了 setSize(int, int),

  • 如果图形可调整大小,

2) 删除

  • layout.setSize(panel.getMarketGraphPane().getPreferredSize());

  • graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());

您不能将对象setSize放置到BorderLayout.CENTER,我认为可以直接放置(生成的图形,使用JUNG.它会生成 JPanel 对象)到 BorderLayout.CENTER 区域,尝试一下,也许您的两次 setSize 产生了一些困惑

然后你就只能打电话了

panel.add(graphPanel, BorderLayout.CENTER);
panel.revalidate();
panel.repaint();

3)另外两个选择(无需清理setSize)

关于Java:在运行时在另一个面板中添加面板以适应可见区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812221/

相关文章:

java - 在 MyBatis 中使用 MySQL 复制(主/从)

java - 如何解决 org.jboss.ws.WSException : Policy not supported in JBoss AS 4. 2.?

java - 发现 JSTL 时区 (KST) 实现错误

java - TextField 失去焦点到其他窗口

java - 图中使用 JUNG 的可达节点集

java - 如何制作直径为 3xp 的圆形的 javafx 按钮?

java - 从局域网计算机访问带有 MySQL DB 的 Java 应用程序

java - 如何在 java netbeans 中制作一个隐藏的 "Exit"按钮?

javascript - 从 MySQL 检索数据并使用 JUNG 进行可视化

java - 代码从 jar 里跳出来运行?是什么原因造成的?