自定义滚动窗格的绘制问题



为了保持我另一个问题的秩序,建议单独询问以下内容:

以下是测试类的代码,我在其中添加了我的自定义 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-Thumb 已绘制,但不移动我唯一改变的(感谢 mgarin)是 g.drawImage(img, thumbBounds.x, thumbBounds.y, new Color(255,255,255,0), null);

如果我

移动拇指,就会发生以下情况(请不要介意设计,这只是为了测试一些不透明的东西......

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

您使列表的背景透明;

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

如果你删除这条线,它会画得很好。

另外需要注意的是:如果要为单元格提供自定义背景颜色,请尝试使用自定义ListCellRenderer,在JList上使用setCellRenderer()方法。然后,您可以设置返回的组件的背景颜色。

相关内容

  • 没有找到相关文章