2012-02-29 9 views
0

次の問題があります。スクロールバーを使わずにJframeコンテンツをスクロールする方法はありますか?コードでプログラム的に行うだけです。私はJappletを内部に持っており、スクロールを表示せずにコンテンツをスクロールする方法を見つけることはできません。全スクロールアクションは、ユーザーアクションではなく、スレッドが実行したいときに実行する必要があります。助けを待って、ありがとう。スイング - スクロールバーを使用せずにJFrameコンテンツをスクロール

私はそれを行う方法が見つかりません。私は自分のコンポーネント(アプレット)を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自体が含まれていますか? JComponent内の

+2

が2/3つの方法があるが、誰もあなたが早く([SSCCE]であなたの質問を編集して、より良い助けのため、試さなかったことを知っているんhttp://sscce.org/) – mKorbel

+0

あなたは 'JApplet'のコードを制御しますか?フレームにアプレットを置くことは可能ですが、それは良い考えではありません。 –

+0

実装を少し変更します。代わりにJletletのmy classがJframeに追加され、Jcomponentが拡張されます。このクラスでは、Jpanel要素を追加します(グラフを視覚化するために使用するJungライブラリで必要です)。しかし、私はまだビューをスクロールする方法を見つけることができません。 – tomi891

答えて

3

使用方法

public void scrollRectToVisible(Rectangle aRect) 

はJScrollPaneの中に追加

+0

私は分かりません。今、私はJletletにJappletを持っています。 JScrollPaneを追加してJappletを追加する必要がありますか? – tomi891

関連する問題