将JCheckBox的状态获取到Java中的另一个类?
这个想法是让我的类有两个完全不同的场景,具体取决于它在构造函数开始时收到的布尔值将JCheckBox的状态获取到Java中的另一个类?,java,swing,jcheckbox,Java,Swing,Jcheckbox,这个想法是让我的类有两个完全不同的场景,具体取决于它在构造函数开始时收到的布尔值isGroupLogsChecked: private boolean isGroupLogsChecked = false; public EditorPaneJobLog() { if (isGroupLogsChecked){ createLayoutForGroupedLogs(); } else { createLayout();
isGroupLogsChecked
:
private boolean isGroupLogsChecked = false;
public EditorPaneJobLog()
{
if (isGroupLogsChecked){
createLayoutForGroupedLogs();
}
else {
createLayout();
}
initDefault();
initListener();
}
要使其工作,值isGroupLogsChecked
必须等于复选框groupLogs
的状态,该复选框在不同的类中计算
private JCheckBox groupLogs = new JCheckBox(Res.getIntl(Constants.RES+"$GroupLogs"));
选中该复选框时,groupLogs.isSelected()
应返回(true),这正是它在其类中的值
我现在要做的是,根据复选框groupLogs
的值,我想在上面的构造函数中检索该值。问题是,到目前为止我没有做到这一点,因为该值始终为false,即使它为true,这意味着EditorPaneJobLog
类没有获得该值
到目前为止,我所尝试的:
EditorJob
类(计算JCheckBox值的地方)中创建一个getter,并使用另一个类中的getter检索该值。然而,我总是得到错误,这是正常的,因为我所做的是:EditorJob EditorJob=new EditorJob();
editorJob.getGroupLogs-->always false
我在这里做的不是得到其他类中已计算的复选框的值,而是得到另一个类EditorJob实例的值,这就是为什么我一直得到false
EditorJob在另一个类中直接访问它。groupLogs
---也不起作用,根据我在上面看到的,应该不惜一切代价避免它谢谢您已经强调了问题:
EditorJob EditorJob=new EditorJob()代码>editorJob.getGroupLogs-->
总是假的
我在这里做的不是获取
其他已经计算过的类,我得到另一个类的值
类EditorJob的实例,这就是为什么我不断得到错误
您需要确保editorJob
是您关心的唯一实例(或者如果您计划拥有多个至少相同的editorJob实例)
您可以使用的一个“黑客”是拥有一个全局接口下面是您想要的-但它不会编译。我们尝试从A类访问B类的某些方法。
public class Test {
public static void main(String[] args) {
A classA = new A();
B classB = new B();
classA.getStuffFromB();
}
}
class A {
public A() { }
public void getStuffFromB() {
// Error because classB will not be able to resolved
System.out.println(classB.getSomething());
}
}
class B {
public B() { }
public int getSomething() {
return 42;
}
}
public interface Globals {
A classA = new A();
B classB = new B();
}
相反,我们可以创建一个新的接口,Globals
,以容纳类的实例。我们要从中调用另一个类的每个类都必须实现我们的新接口。
public class Test {
public static void main(String[] args) {
A classA = new A();
B classB = new B();
classA.getStuffFromB();
}
}
class A {
public A() { }
public void getStuffFromB() {
// Error because classB will not be able to resolved
System.out.println(classB.getSomething());
}
}
class B {
public B() { }
public int getSomething() {
return 42;
}
}
public interface Globals {
A classA = new A();
B classB = new B();
}
现在,我们可以毫无错误地调用getStuffFromB()
public class Test implements Globals {
public static void main(String[] args) {
classA.getStuffFromB();
}
}
class A implements Globals {
public A() { }
public void getStuffFromB() {
System.out.println(classB.getCheckBool());
}
}
class B {
private JCheckBox check = new JCheckBox();
public B() {
check.setSelected(true);
}
public int getSomething() {
return check.isSelected();
}
}
谢谢你的帮助。我尝试了你的方法,但复选框的值仍然为false,即使在其原始类中该值为true。如果你可以在原始问题中发布一个,我可以复制/粘贴并运行它,这将更容易提供帮助。@JesseJames我还编辑了我的答案,以包含一个JCheckBox。我在类B的构造函数中将其设置为true,并从类A获取值。它返回true-因此您的情况可能存在其他问题。