java 对另一个类里的按钮监听,另一个类中的动作监听器 - java

it is possible to have two class, and in one something like

arrayButtons[i][j].addActionListener(actionListner);

and in another

ActionListener actionListner = new ActionListener() {

public void actionPerformed(ActionEvent e) {

for (int j = 0; j < arrayButtons.length; j++) {

for (int i = 0; i < arrayButtons[j].length; i++) {

if (arrayButtons[j][i] == e.getSource()) {

if ((gameNumber == 2) && (playHand.getNumberOfCards() == 0)) {

if (player[j].getCard(i).getSuit() == Suit.HEARTS.toString() && player[j].hasSuitBesideHearts())

//second game

messageOnTable("xxx");

else{

arrayButtons[j][i].setVisible(false);

test[j].setIcon(player[j].getCard(i).getImage());

pnCardNumber[j].setText(Integer.toString(player[j].getCard(i).getNumber()));

pnCardName[j].setText(player[j].getCard(i).toString());

pnCardSuit[j].setText(player[j].getCard(i).getSuit());

playHand.addCard(player[j].getCard(i), j);

player[j].removeCard(i);

}

}

}

//and more

the reason of that is because i need to separate the button (swing) to the action listener

how i can do ?

thanks

解决方案

Not only it is possible to separate these two, it's also recommended (see MVC pattern - it's very much about separating screen controls like buttons, and the logics of your program)

The easiest way that comes to my mind is to do write a named class that implements ActionListener interface, something like this:

public class SomeActionListener implements ActionListener{

private JTextField textField1;

private JComboBox combo1;

private JTextField textField2;

//...

public SomeActionListener(JTextField textField1, JComboBox combo1,

JTextField textField2){

this.textField1=textField1;

this.combo1=combo1;

this.textField2=textField2;

//...

}

public void actionPerformed(ActionEvent e) {

//cmd

}

}

And then add it to your buttons:

ActionListener actionListener = new SomeActionListener(textField1, combo1, textField2);

someButton.addActionListener(actionListener);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值