• 締切済み

スクロールバーの高さが設定できない。

下のプログラムでJScrollパネルの矢印部分の大きさが変わるはずなのですが 幅は変わるが高さが変わりません。 JScrollBar scrollBar = new JScrollBar(); JScrollPane scrollPanel = new JScrollPane(); scrollBar.setPreferredSize(new Dimension(40,40)); scrollPanel.setVerticalScrollBar(scrollBar);

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.3

> 矢印部分の大きさが変わるはず あっ、そうか。上下のarrow buttonsのサイズを変える、でも、それはありえないでしょう。JScrollBar全体に対するsetPreferredSize()ですから…。やっぱ、UIの自作しかないですね。

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.2

方法は色々あります。コツは2つあります。 1.スクロールペインからのイベントを引き継ぐためにスクロールバーは生成せずに    JScrollBar scrollBar = scrollPanel.getVerticalScrollBar();   で、受け取ってから、場所を移動させます。 2.スクロールバーのサイズを自由に設定するためには、それを可能にする   レイアウトマネジャーを使用します。   下のサンプルでは、スプリングレイアウトを使用してます。 JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTable table = new JTable(); table.setModel( new DefaultTableModel(100,30) ); table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); table.setValueAt( "ScrollBarTest", 10, 3 ); table.setPreferredSize( new Dimension(3000,3000) ); JScrollPane scrollPanel = new JScrollPane( table ); JScrollBar scrollBar = scrollPanel.getVerticalScrollBar(); scrollBar.setPreferredSize(new Dimension(40,40)); JPanel eastPanel = new JPanel(); eastPanel.setPreferredSize( new Dimension(40,40) ); SpringLayout layout = new SpringLayout(); eastPanel.setLayout( layout ); eastPanel.add( scrollBar ); layout.putConstraint( SpringLayout.WEST, scrollBar, 0, SpringLayout.WEST, eastPanel ); layout.putConstraint( SpringLayout.NORTH, scrollBar, 50, SpringLayout.NORTH, eastPanel ); frame.add( scrollPanel, BorderLayout.CENTER ); frame.add( eastPanel, BorderLayout.EAST ); frame.setSize( 800, 400 ); frame.setVisible( true );

osiete_kun
質問者

お礼

No1に同じく回答ではないですね?しかし何のアドバイスかも不明です。このサンプルを実行したところつまみがなくなっていますが(なんで消したの?)肝心なArrowの高さは変わっていないようです。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

高さはスクロール量に応じて自動的に変わります。 それが嫌なら、UIを自作してください。

osiete_kun
質問者

お礼

それはかなり特殊なOSでは? 少なくともウィンドウズとFedoraでは変わりません。

関連するQ&A