Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing-不使用滚动条滚动JFrame内容_Java_Swing_Scroll_Jframe - Fatal编程技术网

Java Swing-不使用滚动条滚动JFrame内容

Java Swing-不使用滚动条滚动JFrame内容,java,swing,scroll,jframe,Java,Swing,Scroll,Jframe,我有以下问题。有没有一种方法可以不使用滚动条滚动Jframe内容,只需通过代码编程即可。我有Japplet在里面,我找不到一种方法来滚动它的内容而不显示滚动条。整个滚动操作不应该在用户操作上执行,而是在我的线程想要执行时执行。等待帮助,谢谢 我找不到任何方法来做那件事。我试图将我的组件(Applet)添加到Jscrollpane中,并将其添加到jframe中,但当只显示白色屏幕时,就会出现这种情况 JFrame类: public class SimulationFrame extends JFr

我有以下问题。有没有一种方法可以不使用滚动条滚动Jframe内容,只需通过代码编程即可。我有Japplet在里面,我找不到一种方法来滚动它的内容而不显示滚动条。整个滚动操作不应该在用户操作上执行,而是在我的线程想要执行时执行。等待帮助,谢谢

我找不到任何方法来做那件事。我试图将我的组件(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);
    }
}
J组件:

    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));

}
公共模拟窗口(){
setLayout(新的BorderLayout());
graph=GraphHelper.ProvidePhilinstance();
维度布局大小=新维度(PropertieHelper.getGraphHolderWidth(),
属性Helper.getGraphHolderHeight());
graphLayout=新静态布局(graph,new CheckpointPositionTransformer());
图形布局。设置大小(布局大小);
visualizationViewer=新的visualizationViewer(图形布局,新维度(
PropertiesHelper.getWindowWidth(),PropertiesHelper.getWindowHeight());
visualizationViewer.getRenderContext().setVertexLabelTransformer(新的CheckpointLabelTransformer());
visualizationViewer.getRenderer().getVertexLabelRenderer().setPosition(Renderer.VertexLabel.Position.CNTR);
visualizationViewer.getRenderContext().setVertexFillPaintTransformer(新检查点ColorTransformer());
visualizationViewer.getRenderContext().setEdgeDrawPaintTransformer(新的RouteColorTransformer());
visualizationViewer.getRenderContext().setEdgeLabelTransformer(新RouteLabelTransformer());
最终图像图标mapBackground=createMapBackground();
如果(mapBackground!=null){
mapBackgroundImagePaintable=新的BackgroundImagePaintable(visualizationViewer,mapBackground);
visualizationViewer.addPreRenderPaintable(mapBackgroundImagePaintable);
}
添加(visualizationViewer);
scrollRectToVisible(新矩形(1000100));
}
VisualizationViewer是一个扩展JPanel的类。在此构造函数中放置scrollRectToVisible无效

有什么建议吗?也许这个实现是错误的,Jcomponent包含Jpanel本身?

使用方法

public void scrollRectToVisible(Rectangle aRect)
在JScrollPane中添加的JComponent的

public void scrollRectToVisible(Rectangle aRect)

在JScrollPane中添加的JComponent中,有两种/三种方法,但是没有人知道您尝试了什么,为了更好地帮助您更快地编辑问题,您是否控制了
JApplet的代码?虽然可以将小程序放在一个框架中,但这不是一个好主意。我稍微更改了实现。相反,添加到Jframe的Japplet my类扩展了Jcomponent。在这个类中,我添加了Jpanel元素(这是Jung库所需要的,我使用它来可视化图形)。但是我仍然找不到滚动视图的方法。有两种/三种方法,但是没有人知道您尝试了什么,为了获得更好的帮助,请更快地编辑您的问题,您是否控制
JApplet
的代码?虽然可以将小程序放在一个框架中,但这不是一个好主意。我稍微更改了实现。相反,添加到Jframe的Japplet my类扩展了Jcomponent。在这个类中,我添加了Jpanel元素(这是Jung库所需要的,我使用它来可视化图形)。但我还是找不到滚动视图的方法。我不明白。现在我有了Jframe中的Japplet。我应该添加JScrollPane和Japplet?我不明白。现在我有了Jframe中的Japplet。我应该添加JScrollPane和Japplet吗?