gpt4 book ai didi

java - 自定义 ScrollPane 的绘画问题

转载 作者:行者123 更新时间:2023-11-30 09:37:25 25 4
gpt4 key购买 nike

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

下面是测试类的代码,我在其中添加了自定义的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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com