Java Swing、布尔值和文本字段
这是我目前正在做的一个项目的代码。目前,我正在尝试将值与文本字段相匹配,文本字段是在按下某些按钮时生成的。例如,当您单击开始列车时,车门打开将变为关闭,列车准备就绪将变为是,“列车开”将变为是,列车移动将变为否。我对java swing非常陌生 我尝试使用布尔值和If语句来实现这一点,以便在值为true或false时生成消息。然后,我将trainPowerField、trainMovingField、trainDoorsField和trainReadyField作为文本字段的值连接到文本字段。 但我现在遇到的问题是: java:120:错误:没有为JTextField(布尔值)找到合适的构造函数 add(trainReady=newjtextfield(trainReadyField)) 对于每个文本字段 我不明白为什么我没有合适的施工人员? 我也知道我已经把这件事弄得比我应该做的更复杂了,但是我不知道还有什么其他的方法可以做到 编辑*Java Swing、布尔值和文本字段,java,swing,Java,Swing,这是我目前正在做的一个项目的代码。目前,我正在尝试将值与文本字段相匹配,文本字段是在按下某些按钮时生成的。例如,当您单击开始列车时,车门打开将变为关闭,列车准备就绪将变为是,“列车开”将变为是,列车移动将变为否。我对java swing非常陌生 我尝试使用布尔值和If语句来实现这一点,以便在值为true或false时生成消息。然后,我将trainPowerField、trainMovingField、trainDoorsField和trainReadyField作为文本字段的值连接到文本字段。
由于uni原因,必须删除代码 没有一个
JTextField
构造函数接受一个boolean
参数,现在您不想将其转换为字符串
值。你需要明确地去做。试用
new JTextField(Boolean.toString(trainReadyField));
您需要对其他
布尔值(trainPowerField
等)执行相同的操作。构造函数需要的是字符串,而不是布尔值,请尝试以下操作:
new JTextField(Boolean.toString(trainReadyField))
或者您甚至可以编写自己的“toString”转换:
new JTextField(trainReadyField? "T" : "F"))
为了更好地维护代码,您应该编写自己的函数
public static String boolToText(boolean b) {
if (b) return "T";
return "F";
}
将方法boolToText
设为静态可能是个好主意。另外输入“Feild”。实际上,由于trainReadyField
是基本类型boolean
而不是类boolean
,trainReadyField.toString()
不编译。您需要添加新的布尔值(trainReadyField)。toString()
,或者像Ted Hopp那样做。谢谢:)我忘记了转换,因为我想了太多swing带来的新功能。是的,它成功了!非常感谢。你建议我也改变我的if语句吗?我现在遇到的问题是那些系统线打印,保持不变。在我按下不同的按钮之前,我需要一种清除吗?@Mentoos-我以前没有注意到这些,如果您使用的是IDE,我很惊讶您没有收到警告。问题是您使用的是赋值运算符(=
)而不是相等运算符(=
)。因此,每次执行每个if
语句时,它都会将相应字段设置回true
。我建议您使用if(trainPowerField){…}
等(您可以使用布尔值本身,而不是将其与true
进行比较。如果您对显式等式测试更满意,请使用if(trainPowerField==true){…}
(与=
进行比较,而不是=
)是的,我不得不不用IDE手工写出来。@Mentoos-好吧,在每个if
语句测试中去掉=true
,它应该工作得更好(或者改为==true
,但这不是测试布尔值的好风格)。你建议的最好方法是,使用布尔值本身?我不太确定怎么做,所以这就是为什么我觉得使用平等更舒服的原因。虽然我现在遇到的问题是,文本字段中打印的是false,它们不会改变。使用你的方法会改变这一点吗?