Java 选择后更改JButton的颜色(&;在JFormattedTextField上设置掩码?
我正在写我的第一个Java程序(在Netbeans中),我迷路了。如果有人愿意帮助我,我现在有两个问题 以下是该程序应该做的: 选择4个“状态”选项中的1个,再加上5位数字(这两个项目都是用户通过触摸屏输入的),然后通过电子邮件将此信息发送给主题行为:“Item#[JFormattedTextField中的5位数字]当前是[4个可能的状态选项中的1个]。 电子邮件命令将在用户单击“回车”按钮后发出命令,然后用户单击弹出窗口上的“确定”,该弹出窗口要求用户确认将要发送的邮件。至于我的第三个问题,是关于电子邮件部分的,我想在我整理完这个按钮和文本字段之后,这将是另一个线程 以下是我迄今为止使用的触摸屏UI的图片: (无法以新手身份发布图像,请访问krisbunda.com/gui.png获取此图像) 问题1: 4个状态选项(4个JButtons)包装在一个JPanel中。我希望在“statusPanel”JPanel中按下最近的按钮,将背景更改为蓝色,按钮文本更改为白色。 我是否可以在按钮的父JPanel上放置一个鼠标侦听器,以侦听子按钮上的单击事件(4个状态JButtons),然后无论最后单击哪个按钮,它都会变成蓝色,同时显示白色文本?请为我指出正确的方向 问题2: 我有一个名为“display”的JFormattedTextField,它在单击时显示数字,这些数字是从名为“current”的StringBuffer追加的。我希望文本字段只接受总共5个数字。 当我试着在场地上放置一个“#######”的面具时,当我按下数字键盘的按钮时,它只会发出警告声。目前我选择了“类别:数字”和“格式:自定义”,然后在“格式:“外地。这允许我单击数字按钮并查看其显示的文本,但这并不能阻止我键入超过5个字符 我是通过“属性>格式化程序工厂”对话框来实现的。屏幕截图如下所示: (转到krisbunda.com/text-formatterFactory.png查看此图像) 以下是我目前掌握的代码: (我的帖子太长了,所以请访问:krisbunda.com/java-sampleCode.txt查看) 提前感谢您的帮助Java 选择后更改JButton的颜色(&;在JFormattedTextField上设置掩码?,java,user-interface,swing,jbutton,jformattedtextfield,Java,User Interface,Swing,Jbutton,Jformattedtextfield,我正在写我的第一个Java程序(在Netbeans中),我迷路了。如果有人愿意帮助我,我现在有两个问题 以下是该程序应该做的: 选择4个“状态”选项中的1个,再加上5位数字(这两个项目都是用户通过触摸屏输入的),然后通过电子邮件将此信息发送给主题行为:“Item#[JFormattedTextField中的5位数字]当前是[4个可能的状态选项中的1个]。 电子邮件命令将在用户单击“回车”按钮后发出命令,然后用户单击弹出窗口上的“确定”,该弹出窗口要求用户确认将要发送的邮件。至于我的第三个问题,是
ActionListener
是按钮的更常见方法。A,也用于此,是按您描述的方式更改按钮外观的一种方法JFormattedTextField
问题会更有帮助。文章中可以找到几个这样的例子您的代码看起来很好,并且已经设置了字段来保存对所有按钮的引用,因此现在您只需要在状态设置按钮中编写代码,然后让它们调用具有新状态的子例程。然后,此子例程应将所有按钮重置为其默认颜色,然后在按钮上设置与新状态或现有状态相对应的特殊选定颜色 编辑:在此处添加代码以响应您的评论 首先,切勿将
==
与字符串一起使用。您必须使用equals()
否则,当您得到两个相同但不同的对象的字符串时,它们将不相同,比较将失败
有更好的编码方法,包括使用enum
等。但这应该适合您:
// Reset all the buttons
outsideNotReadyButton.setBackground(...);
loadedButton.setBackground(...);
outsideReadyButton.setBackground(...);
shippedButton.setBackground(...);
// Now set the one of the button's colors conditionally
String status = ...
if(status.equals("SHIPPED")) {shippedButton.setBackground(Color.BLUE);}
else if(status.equals("LOADED")) {loadedButton.setBackground(Color.BLUE);}
// ...and so on
在我发布Stack Overflow之前,我阅读了您多次链接到的Oracle网站上的所有文章,但仍然无法将其组合在一起。我是否可以这样编写代码:if(status==“SHIPPED”){shippedButton.setBackground(Color.blue)}else{}?感谢您的帮助。。。不久前完成了那个项目,但总有一天会被添加到。。。我会记住你的代码,因为我确信我做得不同(可能不是最好的方式)。