当前位置: 首页 > 知识库问答 >
问题:

把JButton放在位置下面

璩涵衍
2023-03-14

我有很多内置按钮的JPanel。我想在屏幕上的鼠标位置下检测JButton。

我得到鼠标的位置

MouseInfo.getPointerInfo().getLocation();

我要检查这个位置上是否有JButton,并获取这个按钮。

例子:

按钮左角位于屏幕位置(50,50),按钮大小为宽度=100,高度=50,鼠标位于屏幕位置(70,70)。

如何检测此位置上是否存在JButton?

共有2个答案

阳勇
2023-03-14

我使用了一种方法,它可能不是最好的,但它有效,您将侦听器添加到您的容器(J面板)并在移动时检查光标的位置,当光标进入按钮的限制内时,它会检查其在容器中的索引并为您提供ID:

List<JButton> btns = new ArrayList<>(); //store all the buttons here for 1 container

//Inside your MouseMove Event of your Panel (only 1)//

   checkPos(evt.x, evt.y);

//////////////////////////////

  private void checkPos(int mousePosX, int mousePosY){

  boolean minX;
  boolean minY;
  boolean maxX;
  boolean maxY;
  for (int i = 0; i < btns.size(); i++) {
    minX = mousePosX >= btns.get(i).getLocation().x;
    minY = mousePosY >= btns.get(i).getLocation().y;
    maxX = mousePosX <= (btns.get(i).getWidth()+ btns.get(i).getLocation().x);
    maxY = mousePosY <= (btns.get(i).getHeight()+ btns.get(i).getLocation().y);

    if (minX && minY && maxX && maxY){  //check if JButton exist on this location

        System.out.println(btns.get(i));  //return the JButton, Can be worked out for more precision
        //OR
        System.out.println("There's a JButton at this Location : " + mousePosX + " - " + mousePosY + " of the screen !");
    }

  }
 }

对不起,如果我误解了问题,祝你好运!

万俟旭
2023-03-14

我有几十个按钮,这是资源饥饿

那么为什么你认为这会消耗资源呢?很可能您的按钮会执行相同的操作,因此您需要做的就是创建一个由每个按钮共享的ActionListener:

ActionListener al = new ActionListener()
{
    @Overrid
    public void actionPerformed(ActionEvent e)
    {
        JButton button = (JButton)e.getSource();
        System.out.println(button.getText());
    }
};

有关这种方法的工作示例,请查看:将单个操作侦听器附加到所有按钮

我想在屏幕上的鼠标位置下检测JButton。

对于基本的Swing知识(本问题不需要),您可以使用SwingU实用程序类。它有各种方法可以帮助您。

>

然后使用上面这一点可以使用GetDeepTestComponentAt(…) 获取组件的方法。

 类似资料:
  • 我似乎无法为JPanel设置按钮的自定义位置。它总是在左上角添加按钮,然后继续向右。我还有一个背景图像,这让事情变得更加困难。框架如下所示:imageshack.com/a/img838/3240/ez6l.png我的代码是: 我想将按钮“MusicButton”添加到右下角/中间/或左侧。如果您可以在JPanel中定制JButton,请分享。谢谢

  • 问题内容: 我需要在否则为空的JPanel的右下角放置一个按钮 我怎么做?应该很容易吧?我想找到正确的布局管理器,而不是使用一系列嵌套面板。 问题答案: 我建议将边框布局管理器与Flow Layout一起使用。 就像是:

  • 我需要在一个空的JPanel的右下角放一个按钮 我该怎么做?应该很容易吧?我希望找到正确的布局管理器,而不是使用一系列嵌套面板。

  • 我是一个初学者程序员,我试图做一个简单的计算器,但由于某种原因,按钮似乎不能正常工作,它们要么消失,填满整个面板,要么设置在错误的位置。奇怪的是,当我悬停并在按钮上点击鼠标时,按钮就会出现。我可能会错过一些非常明显的东西,但请帮助(此外,代码不是很干净)。谢谢你! 主要的 计算器按钮 窗

  • 问题内容: Hibernate配置文件(.hbm.xml)的理想位置是 但我想将这些配置设置放在其他位置,例如 我怎样才能做到这一点? 如果我将配置文件放在该位置,并且启动了Tomcat,则在加载该配置时会出现错误提示 找不到hibernate.cfg.xml 问题答案: 要配置文件的位置,请使用而不是在创建时。 要配置文件的位置,请使用。 也可以看看: Java文档

  • 好的,我有一个Jpanel,在下图中使用覆盖布局显示为白色。它包含一个包含图像(“无可用图像”)和JButton(“注释”)的ScrollPane。 我想把这个按钮放在JGroup的右下角。我尝试了多种布局方法,但似乎无法让它工作。最多按钮向东南移动大约3/4,我不知道为什么。 非常感谢任何帮助。。