2017-06-17 12 views
1

これは私のコードです。私はscroll.repaint()と呼ぶまで水平にスクロールするときいくつかの表示の問題に気付きます。 (JScrollPanelスクロールはパネルと呼ばれる別のJPanelの内部にあります)。水平JScrollPaneでペイントの問題

JPanel pan=new JPanel("My Panel"); 
pan.setPreferredSize(new Dimension(XMIN,YMIN)); 
JScrollPane scroll=new JScrollPane(pan,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
pan.setSize(XPAN,YPAN); 
scroll.setBounds(0,100,XMIN,YMIN); 
//...stuff, I put elements in my JPanel pan. 
pan.setPreferredSize(new Dimension(x>XMIN?x+deltaX:XMIN,YMIN)); 
pan.revalidate(); 
panel.add(scroll); 
scroll.repaint(); 
panel.repaint(); 

するJScrollPaneを修正するとスクロールしても常にJScrollPaneの中に私の項目の明確な見解を持っている簡単な方法はありますか?

答えて

2

それはデフォルトJCheckBoxので、非不透明な要素で問題だった不透明ではありません... 今それがうまく機能:)あなたがない限り、私の経験のSwingコンポーネントで

+0

は、(JLabelのを除く)デフォルトでは不透明ですいくつかの奇妙なLAFを使用しています。本当の問題は、あなたがヌルレイアウトを使用していることです。ヌルレイアウトは使用しないでください。 Swingはレイアウトマネージャで使用するように設計されています。また、setPreferredSize()も使用しないでください。サイズを決定するのはレイアウトマネージャの仕事です。 revalidate()メソッドとrepaint()メソッドはすべて必要ありません。フレームが表示される前に、すべてのSwingコンポーネントをフレームに追加する必要があります。 – camickr

関連する問題