如何在不断重绘帧时在Java Swing应用程序上创建按钮

时间:2017-11-29 19:23:41

标签: java swing

简单版是我在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;喜欢做

0 个答案:

没有答案