简单版是我在JPanel上每秒绘制60次Graphics2D并使用抽象字符串方法创建一堆标签。我将如何制作,以便点击这些标签并发生一些事情?
说明:目前看来,我有一个系统设置,说明世界上每个对象都在旁边绘制一个字符串(所以我可以看到世界上所有对象的列表)。这是通过for循环和Graphics2D抽取方法完成的。
JPanel每秒更新60次,因此每秒重绘60次。我希望能够点击这些对象标签,以便我可以选择项目,我将如何将它们转换为按钮?
我和JButton搞砸了一段时间,但它似乎没有给我带来任何好处,因为每当我添加它时,JPanel都会变成空白而只有按钮会渲染(另外它没有渲染到正确的尺寸)。
更多详情:
我用
for(int I=0; I < sceneObjects.size(); I++) {
}
循环以获取对象ArrayList中的每个对象。每个对象都有一个String变量&#34; Name&#34;。在循环类之前,我发送了一个名为YPosition的int,对于每个对象,YPosition上升了20,这样标签就不会叠加在一起。我使用g2d.DrawString方法来实现这一点。但我需要能够选择对象标签。
如果我在问题中遗忘了某些内容,请告诉我。道歉。
对于那些好奇的人来说,代码看起来就像这样(不能按原样编译):
g2d.setFont(new Font("Arial", Font.PLAIN, hierarchyWidth / 26));
g2d.setColor(Color.black);
int oYPos = 20;
// For every object in existence
for(int i=0; i < engine.sceneObjects.activeObjects.size(); i++) {
GameObject theObject = engine.sceneObjects.activeObjects.get(i);
// If the scrollbar is within range of the hierarchy
// (Based on HierarchyHeight so that it's resolution friendly)
if(oYPos >= hierarchyScroll && oYPos < hierarchyScroll + hierarchyHeight) {
// If the object has no parent
if(theObject.transform.parent == null) {
g2d.drawString(theObject.name, hierarchyPosition.x + 5, hierarchyPosition.y + oYPos);
} else { // If the object has a parent
}
}
oYPos += 20;
}
// Track the last oYPos so that the scrollbar can adjust itself accordingly
lastOYPos = oYPos;
我的猜测将是为这些标签中的每一个创建的类和一个名为isSelected的布尔存储,然后根据类呈现标签,但这似乎比我更复杂#39;喜欢做