0
JTabbedPaneタブ内にJScrollPaneがあります。そのJScrollPaneに背景が赤で、サイズが明示的に設定されたJPanelを配置します。JScrollPane描画コンポーネントそのもの
これは私が得るものである:コンテナフレームのサイズが変更された第2の画像において、成分はスクロールバー要素の下に描かれていることを
注 。
ここでは何が起こっていますか?私は関係するすべてのコンポーネント(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);
が必要
私はあなたがスクロールペインに物を追加するのを忘れていたと思います。 – Laurel
私は "pane.add(wtf);"という行でこれを行います。コードはそこにあります...そして、あなたはそれが画像の中に描かれているのを見ることができます、それは灰色の矩形の真下にあります。そう..... 。 – BadZen
フレームはどこに表示されていますか? – Laurel