Java Swing、布尔值和文本字段

Java Swing、布尔值和文本字段,java,swing,Java,Swing,这是我目前正在做的一个项目的代码。目前,我正在尝试将值与文本字段相匹配,文本字段是在按下某些按钮时生成的。例如,当您单击开始列车时,车门打开将变为关闭,列车准备就绪将变为是,“列车开”将变为是,列车移动将变为否。我对java swing非常陌生 我尝试使用布尔值和If语句来实现这一点,以便在值为true或false时生成消息。然后,我将trainPowerField、trainMovingField、trainDoorsField和trainReadyField作为文本字段的值连接到文本字段。

这是我目前正在做的一个项目的代码。目前,我正在尝试将值与文本字段相匹配,文本字段是在按下某些按钮时生成的。例如,当您单击开始列车时,车门打开将变为关闭,列车准备就绪将变为是,“列车开”将变为是,列车移动将变为否。我对java swing非常陌生

我尝试使用布尔值和If语句来实现这一点,以便在值为true或false时生成消息。然后,我将trainPowerField、trainMovingField、trainDoorsField和trainReadyField作为文本字段的值连接到文本字段。 但我现在遇到的问题是:

java:120:错误:没有为JTextField(布尔值)找到合适的构造函数 add(trainReady=newjtextfield(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,它们不会改变。使用你的方法会改变这一点吗?