Java 使用getLocation()获取不正确的位置
我尝试了很多方法来查找组件的位置,它们要么出现错误,要么显示为零,要么位置不正确。我尝试过getX()和x、getBounds.getLocation、getLocation、getLocationOnScreen、layout.getComponent(1)或l1。如何找到组件的位置?我试图用一个矩形来包围图像,我如何完成定位呢?我用边框而不是矩形来回答这个问题。谢谢你,垃圾上帝Java 使用getLocation()获取不正确的位置,java,swing,components,label,Java,Swing,Components,Label,我尝试了很多方法来查找组件的位置,它们要么出现错误,要么显示为零,要么位置不正确。我尝试过getX()和x、getBounds.getLocation、getLocation、getLocationOnScreen、layout.getComponent(1)或l1。如何找到组件的位置?我试图用一个矩形来包围图像,我如何完成定位呢?我用边框而不是矩形来回答这个问题。谢谢你,垃圾上帝 如果你正在阅读这篇文章来回答一个问题,请看上面的评论。如果你没有得到一个体面的答案,请考虑创建和发布一个小的可编译
如果你正在阅读这篇文章来回答一个问题,请看上面的评论。
如果你没有得到一个体面的答案,请考虑创建和发布一个小的可编译和可运行的程序,我们可以运行,这将为我们展示你的问题。此外,在发布代码时,请使用一致且易于阅读的缩进。理解其他人的代码非常困难,因此您不想让代码缩进变得杂乱无章,从而使我们更难理解。另外,让我们确保您了解组件的位置是相对于其容器的。因此l2的位置将相对于容纳它的布局容器,我猜这是因为侦听器被添加到了一个不同于您预期的组件中。要获得比猜测更好的信息,请遵循@HovercraftFullOfEels的建议。在调用validate()
或pack()
之前,布局位置无效。在附件组件上也考虑<代码> SETBOLDER()/<代码>垃圾,谢谢!我没想到这个主意!
public Textures()
{
super(new GridBagLayout());
layout.add(l1);
layout.add(l2);
add(layout);
String[] T = filerw.fileRead2();
if(T[0].equals("11"))
{
rect1.setLocation(layout.getComponent(1).getBounds().getLocation());
}
if(T[0].equals("12"))
{
rect1.setLocation(layout.getComponent(2).getBounds().getLocation());
}
l1.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent arg0)
{
a = 11;
filerw.fileWrite();
rect1.setLocation(l1.getBounds().getLocation().x, l1.getBounds().getLocation().y);
}
});
l2.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent arg0)
{
a = 12;
filerw.fileWrite();
rect1.setLocation(l2.getBounds().getLocation().x, l2.getBounds().getLocation().y);
repaint();
}
});