2

私の他の質問で秩序を保つために、以下を別々に尋ねることが推奨されました:

以下は、カスタムJScrollBarを追加するテストクラスのコードです。

public class TestScrollBar {

    private static JFrame           f;
    private static Container        pane;
    private static JScrollPane      scroll1;
    private static JScrollBar       scrollbar;
    private static JPanel           panel;
    private static JList<String>    list1;

    public static void main(String[] arg){
        createBasic();
        createComponents();
        f.setVisible(true);
    }

    private static void createBasic(){
        f = new JFrame("ScrollbarTest");
        f.setBounds(100,100,300,300);

        pane = f.getContentPane();
        pane.setLayout(null);

        panel = new JPanel();
        panel.setBackground(Color.GREEN);
        panel.setLayout(null);
        panel.setBounds(50,50,200,150);
    }

    private static void createComponents(){

        String[] data = {"ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg", "ggggg"};
        list1 = new JList<String>(data);
        list1.setBackground(new Color(0,0,0,0));

        scrollbar = new JScrollBar();
        CustomScrollBarUI ui = new CustomScrollBarUI();
        scrollbar.setUI(ui);
        scrollbar.setOpaque(false);

        scroll1 = new JScrollPane(list1);
        scroll1.setBounds(20,20,160,110);
        scroll1.setOpaque(false);
        scroll1.getViewport().setOpaque(false);
        scroll1.setVerticalScrollBar(scrollbar);

        panel.add(scroll1);
        pane.add(panel);
    }
}

カスタムScrollBarUIはここで見ることができます:カスタムJScrollBar-親指はペイントされていますが動かない 私が変更したのは(mgarinのおかげで)唯一のものです g.drawImage(img, thumbBounds.x, thumbBounds.y, new Color(255,255,255,0), null);

そして、親指を動かすと、次のようになります(デザインは気にしないでください。不透明なものをテストするだけです...)

http://tinypic.com/r/sz94pf/6

4

1 に答える 1

2

リストの背景を透明にしました。

list1.setBackground(new Color(0,0,0,0));

その線を削除すると、うまく描画されます。

別の注意点:セルにカスタムの背景色を付けたい場合は、JListのsetCellRenderer()メソッドを使用して、カスタムのListCellRendererを使用してみてください。次に、返すコンポーネントの背景色を設定できます。

于 2012-05-05T22:10:01.360 に答える