- 締切済み
スクロールバーの高さが設定できない。
下のプログラムでJScrollパネルの矢印部分の大きさが変わるはずなのですが 幅は変わるが高さが変わりません。 JScrollBar scrollBar = new JScrollBar(); JScrollPane scrollPanel = new JScrollPane(); scrollBar.setPreferredSize(new Dimension(40,40)); scrollPanel.setVerticalScrollBar(scrollBar);
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
> 矢印部分の大きさが変わるはず あっ、そうか。上下のarrow buttonsのサイズを変える、でも、それはありえないでしょう。JScrollBar全体に対するsetPreferredSize()ですから…。やっぱ、UIの自作しかないですね。
- HarukaV49
- ベストアンサー率53% (48/89)
方法は色々あります。コツは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 );
- _ranco_
- ベストアンサー率58% (126/214)
高さはスクロール量に応じて自動的に変わります。 それが嫌なら、UIを自作してください。
お礼
それはかなり特殊なOSでは? 少なくともウィンドウズとFedoraでは変わりません。
お礼
No1に同じく回答ではないですね?しかし何のアドバイスかも不明です。このサンプルを実行したところつまみがなくなっていますが(なんで消したの?)肝心なArrowの高さは変わっていないようです。