Swing - прокрутка содержимого JFrame без использования полос прокрутки - PullRequest
0 голосов
/ 29 февраля 2012

У меня следующая проблема. Есть ли способ прокрутки содержимого Jframe без использования полос прокрутки, просто чтобы сделать это программно в коде. У меня есть Japplet внутри, и я не могу найти способ прокручивать его содержимое без показа свитков. Все действия прокрутки должны выполняться не над действиями пользователя, а когда мой поток хочет это сделать. Жду помощи, спасибо.

Я не могу найти способ сделать это. Я пытался добавить свой компонент (апплет) в 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?

1 Ответ

3 голосов
/ 29 февраля 2012

Использовать метод

public void scrollRectToVisible(Rectangle aRect)

JComponent, добавленного в JScrollPane

...