JButtons的共同属性

时间:2014-08-11 06:12:40

标签: java arrays swing jbutton

我是新兴的核心功能。我有网页设计经验。唯一性id和通用性class

<div class="x" id="div1"></div>
<div class="x" id="div2"></div>

如果我想为所有div设置属性,我将使用类x。

.x
{
} or via javascript or jquery

如果我想访问单个div,我将使用id。因为它是独一无二的。

以同样的方式在java swing按钮中有什么东西吗?假设我有两个jbuttons的数组。

目前已尝试

我找到了putClientPropertygetClientproperty。它设置并返回id。

btnName.putClientproperty('id',value);

我的第一个问题:
   设置唯一ID的正确方法是什么?还有其他方法吗?

JButton[][] btns = new JButton[5][5];
for(int i=0; i<5; i++)
{
 for(int j=0;j<5;j++)
 {
   btns[i][j] = new JButton("Button"+i+j);
 }
}

上面的代码将创建25个带名字的按钮。

我的第二个问题: 我没有意识到它。如何设置类,以便我可以使用单行代码启用或禁用它们?我的意思是    All the 25 buttons has a common class let it be tiles

JButton.find('tiles').setEnabled(false);

java中有类似的东西吗?我知道迭代和做的方法。但我想减少行数,函数调用。这就是我发布这个问题的原因。请让我知道

2 个答案:

答案 0 :(得分:3)

在您的代码示例中......

JButton[][] btns = new JButton[5][5];
for(int i=0; i<5; i++)
{
    for(int j=0;j<5;j++)
    {
        btns[i][j] = new JButton("Button"+i+j);
    }
}

你说......

  

上面的代码将创建25个带名字的按钮。

这不完全正确,它会创建25个带有Button"+i+j文本的按钮,这可能听起来像是挑剔,但这很重要,因为按钮没有名称,到目前为止,唯一区分它们的是屏幕上显示的文字。

多个按钮可能具有相同的文本,因此除了个人(内存)引用之外,这并不是真正设置唯一性。

“唯一身份证”也含糊不清。您创建的每个按钮都是唯一的,但它可能会共享相似的属性,例如nametextactionCommand,因此唯一让它独一无二的是它在内存中的位置。

如果这就是你的意思,那么是的,这将是开始......

  

我的第二个问题:我没有意识到它。如何设置类以便我可以使用单行代码启用或禁用它们?我的意思是所有25个按钮都有一个共同的类,让它成为瓷砖

从API的角度来看,没有。您需要迭代按钮并单独管理每个按钮。但是,话虽如此,您可以利用Action API。

Action通常是一个独立的工作单元,可以轻松应用于多个按钮,菜单项和键绑定......但在您的情况下,我们只对操作它感兴趣enabled状态,例如,以...开头

public class GroupAction extends AbstractAction {
    @Override
    public void actionPerformed(ActionEvent evt) {
    }
}

然后你可以做点像......

GroupAction groupAction = new GroupAction();
JButton[][] btns = new JButton[5][5];
for(int i=0; i<5; i++)
{
    for(int j=0;j<5;j++)
    {
        btns[i][j] = new JButton(groupAction);
        // This is important as the button will want
        // to use the Action properties to configure itself
        btns[i][j].setText("Button"+i+j);
    }
}

然后你可以使用类似......

的东西
groupAction.setEnabled(false);

使用GroupAction

的SAME实例禁用所有按钮

请查看How to Use Actions了解详情

答案 1 :(得分:0)

您始终可以制作对象地图 - &gt;带有您的id的整数或字符串。例:

Map<JButton, Integer> buttonToIdMap = new TreeMap<JButton, Integer>();

并在地图中输入您的ID:

buttonToIdMap.put(button, 123);

当您需要ID到按钮时:

int id = buttonToIdMap.get(button);