![](/img/trans.png)
[英]How do I call a method from another class to use in my ActionListener class
[英]How do I use a method in a different class in ActionListener?
当我按下JButton button1
,我需要在另一个类中调用dropPoison
方法。 我该怎么做呢?
主班
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class Main extends JFrame implements ActionListener {
private boolean PoisonTrue;
private Player player1;
private Player activePlayer;
private boolean player1Poison;
public Main() // creating the Frame
{
// code
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() instanceof TokenButton) {
TokenButton button1 = (TokenButton) evt.getSource();
if (PoisonTrue == true) {
if (this.activePlayer == player1) {
// Call dropPoison here
player1Poison = true;
PoisonTrue = false;
}
}
}
}
}
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.JButton;
public class TokenButton extends JButton {
ArrayList<Cell> cells;
int nxtToken;
TokenButton[] buttons;
Grid gridPanel;
public TokenButton() {
nxtToken = 19;
cells = new ArrayList<Cell>();
}
public int dropToken(Player player) {
if (this.nxtToken != -1) {
// code
}
return nxtToken;
}
public void dropPoison(Cell selectedCell, Grid grid) {
int x = 0;
int y = 0;
this.gridPanel = grid;
int xAxis = selectedCell.getXPosition();
int yAxis = selectedCell.getYPosition();
// North
if (yAxis > 0) {
grid.gridCells[x][y - 1].setBackground(Color.BLACK);
grid.gridCells[x][y].setBackground(Color.GREEN);
}
}
}
在Main类中使用button1
事件时,需要调用dropPoison
方法。
因此,不要像使用instanceof
来测试Button那样,而是要做类似的事情。
您违反了许多以这种方式编写的OO约定。 建立以下示例:
public class Parent {
private JFrame myFrame;
public Parent() {
myFrame = new JFrame();
JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent theEvent) {
call drop poison here or whatever method you need to call
}
});
frame.add(button, BorderLayout.CENTER);
}
public static void main(String[] args) {
new Parent();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.