gpt4 book ai didi

java - 如何修改附加到多个 JButton 的操作监听器的参数?

转载 作者:行者123 更新时间:2023-12-02 09:57:13 25 4
gpt4 key购买 nike

我有一个必须为绘画应用程序项目创建的任务和按钮数组,一切都已完成,但我仍坚持分配/引用/修改我的 Action 监听器。

它的工作方式(据说)是我有一个循环,它创建、分配名称并向操作监听器添加一个名为 myShapes 的 JButton 数组。由此,我应该将 Action 监听器命名为listener();给每个 jbutton 一个 int 1-6,设置当前的 actionPerformed 状态。

int actionNum = 1;

ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
currentAction = actionNum;
}
};


//........................................................................

String[] myShapesName = {"brushBut", "lineBut", "ellipseBut", "rectBut", "strokeBut", "fillBut"};
//String[] myLisName = {"brushButL", "lineButL", "ellipseButL", "rectButL", "strokeButL", "fillButL"};

JButton[][] myShapes = new JButton[3][2];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
myShapes[i][j] = new JButton();
myShapes[i][j].setBounds(0, 0, 50, 50);//(100, 200);
myShapes[i][j].setName(myShapesName[i+j]);
myShapes[i][j].setBackground(null);
myShapes[i][j].putClientProperty("id",

String.valueOf(myShapesName[i+j]).concat(String.valueOf(j)));
MyShapesBox.add(myShapes[i][j]);
System.out.println(listener);
}
}

问题是我不知道如何更改actionlistener,以便它为所有6个Jbutton提供不同的actionPerformed状态,因为每个状态代表不同的画笔。我尝试了几种方法,例如尝试创建一个操作列表数组并重命名它们,但这会给出分配所需的错误或循环中断,并以最后一次尝试结束。不幸的是,这目前超出了我的能力范围。如果我已经这样做了 2 天,我就被难住了。

最佳答案

我的第一个想法是创建一个操作类,它采用 int 值作为其构造函数的一部分,为了简单起见,我将其设为内部类,但您可以使用外部类,但您需要向其传递更多详细信息,例如...

public class TestPane extends JPanel {

private int currenAction;

public TestPane() {
String[] myShapesName = {"brushBut", "lineBut", "ellipseBut", "rectBut", "strokeBut", "fillBut"};
//String[] myLisName = {"brushButL", "lineButL", "ellipseButL", "rectButL", "strokeButL", "fillButL"};

setLayout(new GridLayout(3, 2));
JButton[][] myShapes = new JButton[3][2];
int action = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
myShapes[i][j] = new JButton();
myShapes[i][j].setBounds(0, 0, 50, 50);//(100, 200);
myShapes[i][j].setName(myShapesName[i + j]);
myShapes[i][j].setBackground(null);
myShapes[i][j].putClientProperty("id",
String.valueOf(myShapesName[i + j]).concat(String.valueOf(j)));

myShapes[i][j].addActionListener(new ButtonAction(action));
action++;
add(myShapes[i][j]);
}
}
}

public class ButtonAction implements ActionListener {

private int actionNum;

public ButtonAction(int actionNum) {
this.actionNum = actionNum;
}

@Override
public void actionPerformed(ActionEvent arg0) {
currenAction = actionNum;
System.out.println(actionNum);
}

}

}

关于java - 如何修改附加到多个 JButton 的操作监听器的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com