2011-06-27 8 views
3

私はビューポートビューとしてScrollableを実装するJPanelを持つJScrollPaneを持っています。 ScrollableTracksViewportHeightとScrollableTracksViewportWidthをfalseに設定すると、パネルは希望のサイズにとどまります。良い。問題は、スクロール可能なパネルの周りに誰がスペースを所有しているのかわかりません。私はすべてのコンポーネントとダイアログの背景を変更しようとしたような気がしますが、何もしないようです。醜い灰色をネオンイエローのような楽しい色に変えるにはどうすればいいですか?ここでJava Swingスクロール可能なビューポートのエッジの色は誰が所有していますか?

は私が話しているかのスクリーンショットです:

ここに私が欲しいものです:

enter image description here

そしてここでは、第1の画像を複製するためのコードです:

package components; 

import java.awt.*; 
import javax.swing.*; 

@SuppressWarnings("serial") 
public class DialogWithScrollPane extends JFrame { 

    ScrollablePanel scrollablePanel; 

    public DialogWithScrollPane() { 
    super(); 

    setResizable(true); 

    Container pane = getContentPane(); 

    scrollablePanel = new ScrollablePanel(); 

    final JScrollPane scrollPane = new JScrollPane(); 
    scrollPane.setPreferredSize(new Dimension(300,300)); 
    scrollPane.setViewportView(scrollablePanel); 
    scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
    pane.add(scrollPane); 

    setMinimumSize(new Dimension(300, 300));   
    setVisible(true); 
    } 

    class ScrollablePanel extends JPanel implements Scrollable { 

    public ScrollablePanel() { 
     super(); 

     setBackground(Color.red); 
     setPreferredSize(new Dimension(200, 100)); 
    } 

    public Dimension getPreferredScrollableViewportSize() { 
     return getPreferredSize(); 
    } 

    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 0; 
    } 

    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { 
     return 0; 
    } 

    public boolean getScrollableTracksViewportHeight() { 
     return false; 
    } 

    public boolean getScrollableTracksViewportWidth() { 
     return false; 
    } 

    } 

    public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     new DialogWithScrollPane(); 
     } 
    }); 
    } 
} 

答えて

4
scrollPane.getViewport().setBackground(Color.yellow); 
+0

+1明確にするために! – trashgod

4

it すべては、JViewportに属し、hereのように任意の色を塗りつぶすことができます。

+0

少し複雑ですが、なぜそうではありませんか?+1 – mKorbel

+0

@mKorbel:私はデモコードを訴える。 :-) – trashgod

+0

より良い例http://stackoverflow.com/questions/6051755/java-wait-cursor-display-problem/6051893#6051893 :-) – mKorbel

関連する問題