【发布时间】:2012-05-05 17:02:24
【问题描述】:
为了在我的其他问题中保持秩序,建议单独提出以下问题:
以下是测试类的代码,我在其中添加了我的自定义 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);
如果我移动拇指,会发生以下情况(请不要介意设计,这只是为了测试一些不透明的东西......)
【问题讨论】:
-
你能发布一个实际的问题吗?我在上面的原始帖子中没有看到,只是描述性的东西。另外,我在您的问题中添加了一个“java”标签。
-
从图片上看,滚动容器并没有在滚动时更新,并且您会得到那些从之前的内容延伸出来的线条。您可能只需要在滚动结束时执行
SwingUtilities.updateComponentTreeUI(scroll1)即可正确更新。
标签: java swing jscrollpane jlist jscrollbar