我是新兴的核心功能。我有网页设计经验。唯一性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的数组。
目前已尝试
我找到了putClientProperty
和getClientproperty
。它设置并返回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中有类似的东西吗?我知道迭代和做的方法。但我想减少行数,函数调用。这就是我发布这个问题的原因。请让我知道
答案 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
文本的按钮,这可能听起来像是挑剔,但这很重要,因为按钮没有名称,到目前为止,唯一区分它们的是屏幕上显示的文字。
多个按钮可能具有相同的文本,因此除了个人(内存)引用之外,这并不是真正设置唯一性。
“唯一身份证”也含糊不清。您创建的每个按钮都是唯一的,但它可能会共享相似的属性,例如name
,text
和actionCommand
,因此唯一让它独一无二的是它在内存中的位置。
如果这就是你的意思,那么是的,这将是开始......
我的第二个问题:我没有意识到它。如何设置类以便我可以使用单行代码启用或禁用它们?我的意思是所有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
请查看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);