将按钮添加到JScrollpane

问题描述:

我正在使用Java和SWING,并且我有一个滚动窗格,它添加了一个相当大的图像,现在工作得很好,这意味着滚动功能按预期工作。然而,在这个形象,我需要补充Jbuttons中,并能够对这些将按钮添加到JScrollpane

鼠标点击行为在我下面的代码位的时刻上的不同位置:(片段,让我知道如果你需要任何东西)

jButton1 = new JButton("CLICK"); 
jButton1.setBounds(0, 0, 100, 100); 

在此之后添加我的ActionListener,它工作得很好,然后我创造我的滚动面板与IMG:

BufferedImage wp = ImageIO.read(new File("Main_background.jpg")); 

JLabel image = new JLabel(new ImageIcon(wp)); 

scrollerContainer.setSize(screen_width-50,screen_height-50); 
scrollerContainer.setLayout(new BorderLayout()); 

添加按钮,我scrollerPane:

scroller.add(jButton1); 

最后增加了我的滚动面板到我的容器:

scrollerContainer.add(scroller); 

什么情况是,该按钮非常意想不到的时间和地点出现。首先它并不总是显示,它似乎发生在当java调用重绘/绘画时,其次,按钮与我的滚动窗格“滚动”,这意味着如果我应该将图像放在最右侧,按钮仍然会出现,即使它应该只显示在0,0。我想我不应该将jButton添加到我的滚动器对象,而是添加其他东西?但我无法弄清楚什么。

希望这个问题是有道理的,有人可以帮我:)

+1

请包括一个[SSCCE](http://sscce.org/)“更好的帮助更快”。 :D – mre

你不应该直接将组件添加到滚动窗格。

该按钮需要添加到您在滚动窗格的视口中显示的标签中。

在未来发布您的SSCCE的问题,所以我们不需要猜测。

+1

非常感谢您的快速回答 - 将来我会确保发布一个更短,更好的问题(感谢链接!) – Rasmus