我正在使用Java和SWING,并且我有一个带有相当大图像的滚动窗格,它现在工作得很好,这意味着滚动功能正在按预期工作。但是在这个图像的不同位置我需要添加jButton并能够对这些鼠标点击
目前我得到了以下一些代码:(片段,如果您需要其他任何内容,请告诉我)
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调用redraw / paint时,其次是按钮“滚动”我的滚动条,这意味着如果我将图像放到最右边,按钮仍然会出现,即使它应该只显示在0,0。我想我不应该将jButton添加到我的滚动对象,而是添加其他东西?但我无法弄清楚是什么。
希望问题有道理,有人可以帮助我:)
答案 0 :(得分:2)
您永远不应将组件直接添加到滚动窗格。
需要将按钮添加到您在滚动窗格的视口中显示的标签。
将来在您的SSCCE上发布问题所以我们不需要猜测。