0

私は本当に簡単なテストケースを作りました:

  • BorderLayout(panel1)を含むグローバル包含パネルがあります
  • このグローバルパネルにはJScrollPane(scroll1)が含まれています
  • これには、 (panel2)が設定されJScrollPaneたパネルが含まれていますBoxLayoutPAGE_AXIS

そして、パネルJLabelにコンポーネント( 's)を追加するこの小さなコードがあります2 :

for (int i = 0; i < 150; i++) {
    panel2.add(new JLabel(String.valueOf(i)));
}
panel2.revalidate();

できます。JXPanelここで、SwingXから拡張したカスタムパネルを使用したいと思います。したがって、 panel2は私のテストケースのようになります。

public class Panel2 extends JXPanel {
}

もう動作しません。スクロールバーは表示されません。なんで?JXPanel内で使用するときに何か特別なことはありますJScrollPaneか?

編集:

setScrollableHeightHint(ScrollableSizeHint.NONE);onを使用した後、コンポーネントの数panel2に関してpanel2サイズを変更します。これは私が望む動作ではありません。スクロールペインで固定サイズを維持する必要があります。

4

2 に答える 2

3

JXPanelのscrollableHeightHint/scrollableWidthHintプロパティを見てください。デフォルトはFITであり、(ビューポートを埋める)モードの1つに変更します。

于 2012-10-03T10:04:04.817 に答える
2

おそらく内部のtracksScrollableHeightorメソッドがデフォルトでtrueを返すため、scrollBarsは表示されません。tracksScrollableWidthJXPanel

この質問のクレオパトラの答えを参照してください。覚えておくべき重要なことはScrollableSizeHint、パネルに適切な値を設定することです。この場合は、おそらく次のようになります。ScrollableSizeHint.NONE

于 2012-10-03T10:01:53.353 に答える