我有一个默认为
setEnabled(false)
的 JButton,然后如果另一个类的条件为 true,则该按钮将被启用,但该按钮根本没有被启用。所有 3 个类都来自同一个包。
Main.java(主类)
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
OtherClass c1 = new OtherClass();
Panel p = new Panel();
frame.add(p);
frame.setSize(300,300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//p.setButtonEnabled();
}
}
Panel.java
import javax.swing.JButton;
import javax.swing.JPanel;
public class Panel extends JPanel{
JButton b1 = new JButton("OK"); ;
public Panel(){
b1.setSize(50, 50);
b1.setEnabled(false);
add(b1);
}
public void setButtonEnabled(){
b1.setEnabled(true);
}
}
OtherClass.java
public class OtherClass {
Panel p1 = new Panel();
//some method
public void method(){
if (true){
p1.setButtonEnabled();
}
}
}
但是当我从 main 方法中调用
setButtonEnabled()
方法时,它以某种方式起作用了,有人可以解释为什么以及如何修复它,我刚刚学习 Java 大约一个月,这是我第一次使用 Swing,非常感谢。
按钮的状态不受影响,因为 setButtonEnabled() 是在单独的 Panel 实例上调用的,这不会反映在 main 方法中添加到框架的实例。
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
Panel p = new Panel();
OtherClass c1 = new OtherClass(p); // Pass the Panel instance to OtherClass
frame.add(p);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
public class OtherClass {
private Panel p1;
public OtherClass(Panel p1) {
this.p1 = p1;
}
public void method(){
if (true){
p1.setButtonEnabled();
}
}
}