2012-02-29 67 views
0

我有以下问题。有没有办法在不使用滚动条的情况下滚动Jframe内容,只是以编程方式在代码中执行。我有Japplet,我找不到滚动显示内容的方式。整个滚动操作不应该在用户操作上执行,而应该在我的主题要执行时执行。等待帮助,谢谢。摇摆 - 滚动JFrame的内容,而无需使用滚动条

我找不到任何方式做到这一点。我试图将我的组件(Applet)添加到Jscrollpane,并将其添加到jframe,但是当仅显示白色屏幕时,它会导致出现问题。

JFrame类:

public class SimulationFrame extends JFrame { 

    private SimulationWindow simulationWindow; 

    public SimulationFrame() throws HeadlessException { 
     super(PropertiesHelper.getWindowTitle()); 

     simulationWindow = new SimulationWindow(); 
     JScrollPane scrollPane = new JScrollPane(simulationWindow); 
     this.getContentPane().add(scrollPane); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.pack(); 
     this.setVisible(true); 
    } 
} 

的JComponent:

public SimulationWindow() { 

    setLayout(new BorderLayout()); 

    graph = GraphHelper.provideGraphInstance(); 

    Dimension layoutSize = new Dimension(PropertiesHelper.getGraphHolderWidth(), 
             PropertiesHelper.getGraphHolderHeight()); 
    graphLayout = new StaticLayout<Checkpoint, Route>(graph, new CheckpointPositionTransformer()); 
    graphLayout.setSize(layoutSize); 

    visualizationViewer = new VisualizationViewer<Checkpoint, Route>(graphLayout, new Dimension(
      PropertiesHelper.getWindowWidth(), PropertiesHelper.getWindowHeight())); 

    visualizationViewer.getRenderContext().setVertexLabelTransformer(new CheckpointLabelTransformer()); 
    visualizationViewer.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR); 
    visualizationViewer.getRenderContext().setVertexFillPaintTransformer(new CheckpointColorTransformer()); 
    visualizationViewer.getRenderContext().setEdgeDrawPaintTransformer(new RouteColorTransformer()); 
    visualizationViewer.getRenderContext().setEdgeLabelTransformer(new RouteLabelTransformer()); 

    final ImageIcon mapBackground = createMapBackground(); 

    if (mapBackground != null) { 
     mapBackgroundImagePaintable = new BackgroundImagePaintable(visualizationViewer, mapBackground); 
     visualizationViewer.addPreRenderPaintable(mapBackgroundImagePaintable); 
    } 
    add(visualizationViewer); 
    scrollRectToVisible(new Rectangle(1000,100)); 

} 

VisualizationViewer是扩展JPanel的类。在此构造函数中放置scrollRectToVisible不起作用。

任何提示?也许这种实现是错误的,其中Jcomponent包含Jpanel本身?

+2

有两种/三种方式,但没有人知道你是怎么尝试,为更好地帮助有[SSCCE]越早编辑您的问题( http://sscce.org/) – mKorbel 2012-02-29 11:23:06

+0

你是否控制'JApplet'的代码?虽然可以将小程序放在一个框架中,但这不是一个好主意。 – 2012-02-29 11:44:56

+0

我改变了一下实现。相反,Japplet将添加到Jframe中的我的类扩展到Jcomponent。在这个类中,我添加了Jpanel元素(这是Jung图书馆需要的,我用它来可视化图表)。但我仍然无法找到滚动视图的方法。 – tomi891 2012-02-29 11:58:33

回答

3

使用方法

public void scrollRectToVisible(Rectangle aRect) 
在JComponent

加入JScrollPane的

+0

我不明白。现在我已经在Jframe中获得了Japplet。我应该添加JScrollPane并添加Japplet到它? – tomi891 2012-02-29 11:25:36