当验证正确时,将si按钮放置为绿色,则我执行了不正确的验证,并且si按钮仍为该颜色。
我尝试选择两个按钮的原始颜色,但不适用于si按钮。
private void btn_validarActionPerformed(java.awt.event.ActionEvent evt) {
String w_correo = caja_correo.getText();
Pattern p_correo1 = Pattern.compile("^(?=.{1,129}$)[a-zA-Z][a-zA-Z][a-zA-Z]*\\.[a-zA-Z][a-zA-Z][a-zA-Z]*\\.(?:2019|20[2-9][0-9]|2[1-9][0-9]{2}|[3-9][0-9]{3})@([0-9]|[a-z]|[A-Z])+\\.edu.?[a-z]*$");
Matcher m_correo1 = p_correo1.matcher(w_correo);
Pattern p_correo2 = Pattern.compile("^(?=.{1,129}$)(?:2018|201[0-7]|200[0-9]|1[0-9]{1,3}|[0-9]{1,3})\\.[a-zA-Z][a-zA-Z][a-zA-Z]*\\.[a-zA-Z][a-zA-Z][a-zA-Z]*@\\w+(?:\\.\\w+)*\\.com\\.co$");
Matcher m_correo2 = p_correo2.matcher(w_correo);
correcto.setBackground(null);
incorrecto.setBackground(null);
if (m_correo1.matches()|| m_correo2.matches()) {
correcto.setBackground(null);
incorrecto.setBackground(null);
String validacion = "";
validacion = validacion + "Direccion de correo electrónico correcta";
JOptionPane.showMessageDialog(null, validacion);
correcto.setForeground(Color.GREEN);
}
else {
String validacion = "";
if (!m_correo1.matches() || m_correo2.matches()) {
correcto.setBackground(null);
incorrecto.setBackground(null);
validacion = validacion + "Direccion de correo electrónico incorrecta";
JOptionPane.showMessageDialog(null, validacion);
incorrecto.setBackground(Color.RED);
}
}
}
必须更改,以使si按钮停止保持绿色
答案 0 :(得分:0)
在您要调用incorrect.setBackground(null)
的正确代码块(将文本设置为绿色的代码块)内,以便从其中删除背景色。
在另一个块中,您还应该从correcto
-按钮(setForeground(null)
)中删除绿色,以表示更改为错误答案。
请注意,Swing要求您在已更改的UI元素上调用repaint()
,以确保重绘,否则,只有在特定事件导致UI重绘后(例如,{ {1}}大小。
作为提示,您应该为变量找到更多合格的名称。您选择的字母很难阅读,因为它们实际上是相同的,但只包含一些单个字符或数字。例如,您的模式可以命名为JFrame
,另外一个p_correctEdu
。