3

JScrollPane使用するビュー コンポーネントを持つ がありますSpringLayout

final JPanel panel = new JPanel(new SpringLayout());
// add stuff to panel here
final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
getContentPane().add(scrollPane);

JScrollPaneうまくいかないようです。どんな助けでも大歓迎です!

4

1 に答える 1

4

スクロールペインの使用方法からの引用

スクロールペインの優先サイズを明示的に設定しない限り、スクロールペインは、9つのコンポーネント(ビューポート、および存在する場合は2つのスクロールバー、行と列のヘッダー、および4つのコーナー)の優先サイズに基づいてスクロールペインを計算します。最大の要因であり、ほとんどのプログラマーが気にするのは、クライアントの表示に使用されるビューポートのサイズです。

  • setPreferedSize(Dimension d)したがって、JScrollPaneインスタンスを呼び出す必要があります

    final JPanel panel = new JPanel(new SpringLayout());
    // add stuff to panel here
    final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    scrollPane.setPreferredSize(new Dimension(300, 300));
    add(scrollPane);
    
  • またはビューポートとして使用される/コンポーネントgetPreferredSize()のオーバーライドJPanel

    final JPanel panel = new JPanel(new SpringLayout()) {
    
        @Override
        public Dimension getPreferredSize() {
             return new Dimension(300, 300);
         }
     };
     // add stuff to panel here
     final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    add(scrollPane);
    

その他の注意事項:

  • JFrameクラスを不必要に拡張しないでください。

  • 呼び出しがcontentPaneadd(..)に転送されるときに、JFrameインスタンスを呼び出すだけです。

于 2012-11-24T18:53:24.973 に答える