我有很多内置按钮的JPanel。我想在屏幕上的鼠标位置下检测JButton。
我得到鼠标的位置
MouseInfo.getPointerInfo().getLocation();
我要检查这个位置上是否有JButton,并获取这个按钮。
例子:
按钮左角位于屏幕位置(50,50),按钮大小为宽度=100,高度=50,鼠标位于屏幕位置(70,70)。
如何检测此位置上是否存在JButton?
我使用了一种方法,它可能不是最好的,但它有效,您将侦听器添加到您的容器(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 !");
}
}
}
对不起,如果我误解了问题,祝你好运!
我有几十个按钮,这是资源饥饿
那么为什么你认为这会消耗资源呢?很可能您的按钮会执行相同的操作,因此您需要做的就是创建一个由每个按钮共享的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,我不知道为什么。 非常感谢任何帮助。。