gpt4 book ai didi

java - 如何访问 JButton 层次结构中的方法 "across"?

转载 作者:行者123 更新时间:2023-12-01 22:20:13 25 4
gpt4 key购买 nike

我有两种类型的按钮扩展 JButton,并且我需要一个按钮来访问另一个按钮的 get 方法。但因为 isPressed() 方法不是按钮的一部分,我无法调用它。

澄清:我有一种按钮。当我按下该按钮时, boolean 值被设置为 true。我想要另一个按钮来访问该 boolean 值。

public class EmptySpace extends JButton {

protected int x;
protected int y;
protected String name;

public EmptySpace(String text, int x, int y){
super(text);
this.name = text;
this.x = x;
this.y = y;

addMouseListener(new MouseAdapter(){
@Override
public void mouseEntered(MouseEvent e){
Board.toStringText.setText(e.getSource().toString());
}
});

addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(Board.buildButton.getIsPressed()){ //ERROR HERE

}
}
});
}

public String toString(){
return "Name: " + name + " Xcoords: " + x + " Ycoords: " + y;

}


public class BuildButton extends JButton {

boolean isPressed = false;

public BuildButton(){

addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
isPressed = true;
Board.BuildIsPressed.setText( "Building : "+ boardRunner.numberOfbiulds +" builds left.");
}
});

}
public boolean getIsPressed(){
return isPressed;
}

最佳答案

您的解决方案是将您的模型与 GUI 分开,将 ActionListener 添加到一个按钮,并在该监听器中,在程序的模型中设置一个 boolean 值。然后,如果需要,另一个按钮的 ActionListener 可以访问该状态。

其他方面的建议:

  • 避免过度使用继承,总体上倾向于组合。
  • 避免将 MouseListener 与 JButton 一起使用,因为这会改变 JButton,导致它们无法按预期运行 - 空格键将停止在聚焦的 JButton 上工作,即使禁用时,JButton 的操作仍会发生。

关于java - 如何访问 JButton 层次结构中的方法 "across"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010422/

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