java - 自定义 ScrollPane 的绘画问题

标签 java swing jscrollpane jlist jscrollbar

为了保持我的其他问题的顺序,建议单独询问以下问题:

以下是测试类的代码,我在其中添加了自定义的 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可以在这里看到:Custom JScrollBar-Thumb is painted, but doesn't move 我唯一改变的(感谢 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() 方法。然后您可以设置返回的组件的背景颜色。

关于java - 自定义 ScrollPane 的绘画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464053/

相关文章:

java - Ajax 到 Servlet,URI 编码的查询字符串

java - 简单的性能测试,不同的结果

java - 如何在 JTable 中编辑行

Java Graphics2D、JPanel、JScrollPane

java - 无法使用 Maven 构建 Spring 4 项目

java - 使用 EclEMMA 的 Catch block 的代码覆盖率

java - 为什么我在线程 "AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException : 2? 中收到异常

java - 你如何检测鼠标光标是否在 java 中的 JFrame 内?

java - JScrollpane 不滚动大内容

java - 不知何故,JTable 中没有出现水平滚动条