我有很多class.java文件,我需要在按钮所在的其他类中禁用/启用Button方法。 我有这样的代码 第一节
public class Main {
JFrame frame = new JFrame();
JButton b_X = new JButton("X");
}
第二课
public class GUI extends Main{
Button B = new Button();
GUI(){
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLayout(null);
frame.setLocation(400, 200);
frame.add(b_X);
b_X.setBounds(0, 0, 120, 20);
b_X.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
B.call();
update();
}
});
}
public int update(){
//some uniportant code
}
public static void main(String[] args){
new GUI();
}
}
第3课
public class Button extends Main{
UserMethods UM = new UserMethods();
public int call(){
UM.m1();
//Uniportant stuff..
}
}
最后一节课
public class UserMethods extends Main{
public int m0(){
if(n1 >= n2){
n1 = 0;
n2 = n2 + 40;
n3++;
}
return n3;
}
public int m1(){
//uniportant code again
if(ASD == 0){
b_X.setEnabled(false);
}
return XYZ;
}
}
代码更复杂,而且更大,但这些东西对于这个问题并不重要。
主要问题:
顺便说一句:不要介意我的代码风格,不介意我的英语,不介意别的。我需要帮助解决主要问题而不是其他东西..谢谢我需要以某种方式从最后的方法更新GUI类中的按钮b_X UserMethods类。但是当我添加行GUI G = new GUI()到最后 class然后引用G.update(); (更新所有东西)我 创建无限循环,如C类指的是C3,C3到C4和C4到C2 (如果我做对了)并且Java弹出错误StackOverFlow ... 从第4节的方法中使用GUI类中的方法有什么帮助吗? 上课?
答案 0 :(得分:0)
尝试使用静态作为第一堂课:
public static class Main {
public static JFrame frame = new JFrame();
public static JButton b_X = new JButton("X");
}
然后你应能够使用以下方法从另一个类访问它:
Main.b_x.someFunction();
答案 1 :(得分:0)
你永远不应该直接修改另一个对象的子组件,这将给你的逻辑带来很大的压力,因为你的类竞争强制执行什么是正确的状态的概念,并将你的程序置于不一致状态非常非常快
更好的解决方案之一是使用某种模型/控制器接口。您可以创建此模型/控制器的实例,并将其传递给其他类,可能是通过构造函数。
模型/控制器将定义每个类能够做什么,并定义可以通知状态变化的方法
每个班级将负责确定状态变化对他们意味着什么,并相应地更新他们自己
阅读Model-View-Controller和Observer Pattern了解更多详情。 Swing使用这些概念作为核心,因此低估它们将有助于您更好地理解整体API