2016-04-26 14 views
0

JTabbedPaneタブ内にJScrollPaneがあります。そのJScrollPaneに背景が赤で、サイズが明示的に設定されたJPanelを配置します。JScrollPane描画コンポーネントそのもの

これは私が得るものである:コンテナフレームのサイズが変更された第2の画像において、成分はスクロールバー要素の下に描かれていることを

enter image description here

enter image description here

ここでは何が起こっていますか?私は関係するすべてのコンポーネント(JPanel以外のコンポーネントだけでなく、最終的にはいくつかのJEditorPaneが必要です)のレイアウトマネージャのすべての組み合わせを試しました。大きな空白の矩形の下に描画するもの以外は描画できません?バックグラウンド)

コード:メインJFrameのサブクラスで

// Called once on startup/layout. 
public void refreshGUIState() { 
    for (int i = 0; i < client.getFrameStackLength(); i++) { 
     InferenceFrame frame = client.getFrame(i); 
     JScrollPane pane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
              JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
     JPanel wtf = new JPanel(); 
     pane.setBackground(Color.YELLOW); 
     wtf.setBackground(Color.red); 
     wtf.setSize(100,100); 
     wtf.setPreferredSize(wtf.getSize()); 
     pane.add(wtf); 
     workspace.addTab(Integer.toString(i), pane); 
    } 
} 

public GuiClient() throws CliException, ParticleSourceException { 
    super("L4 Interactive Prover"); 
    setSize(800,600); 

    mainArea = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); 
    mainArea.setDividerSize(2); 
    mainArea.setBackground(Color.DARK_GRAY); 
    getContentPane().add(mainArea); 

    /* ... menu bar init ... */ 

    toolspace = new JPanel(); 
    workspace = new JTabbedPane(); 
    mainArea.add(toolspace); 
    mainArea.add(workspace); 

    this.validate(); 
    refreshGUIState(); 
} 

編集:予想通り、その最初の子が、追加されたときにJScrollPaneは何とかビューポートを作成していなかったという疑いの下で私は3つの引数のコンストラクタも試しました。同じ振る舞い。

再編集:私は間違ってadd()呼び出しをしました。うわー。そうだね

あなたがするJScrollPaneを初期化するときにもそれを行うことができます

pane.setViewportView(wtf); 

が必要

+0

私はあなたがスクロールペインに物を追加するのを忘れていたと思います。 – Laurel

+0

私は "pane.add(wtf);"という行でこれを行います。コードはそこにあります...そして、あなたはそれが画像の中に描かれているのを見ることができます、それは灰色の矩形の真下にあります。そう..... 。 – BadZen

+0

フレームはどこに表示されていますか? – Laurel

答えて

4

代わりの

pane.add(wtf); 

JScrollPane pane = new JScrollPane(wtf); 

それとも、あなたのケースで:

JScollPane pane = new JScrollPane(wtf, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
関連する問題