我已经创建了一个控制台应用程序,现在开始将其转换为摇摆应用程序。我有一个问题,我搜索了很多次,但我没有找到任何答案。
我的应用程序有一个类来验证用户的输入,如果输入错误,它会向控制台发出错误消息。所以我尝试做的是,我有一个Jtextfield并验证这个输入,如果输入错误,它应该给我错误消息。
这是我的Input类,用户可以在其中编写
public class Input {
private static BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
private Output output = new Output();
private static String captureText() throws Exception {
return eingabe.readLine();
}
public String formatInput() {
boolean again = true;
while (again) {
try {
String format = captureText();
if (!format.equalsIgnoreCase("Y") && !format.equalsIgnoreCase("N")) {
again = true;
throw new Exception();
}
again = false;
return format;
} catch (Exception e) {
this.output.formatInputWrong();
}
}
return null;
}
}
这是我的输出类方法
void formatInputWrong() {
System.out.print("\nThe Format Input is wrong.");
}
我只是想知道我可以使用输入类的验证,还是应该为swing输入验证创建一个特殊的类,因为我知道我可以取出JTextfield的输入
您的错误消息现在显示在控制台上。看起来您希望消息显示在GUI中。如如何使用焦点子系统:验证输入所示,InputVerifier是一个不错的选择。由于您的shouldYieldFocus()实现允许产生副作用,因此可以根据需要更新状态显示。从这个完整的示例开始,下面的变体添加了一个标签,并根据调用verify()的结果将其置于shouldYieldFocus()中。
private static final String OK = "Values OK.";
private JLabel status = new JLabel(OK, JLabel.CENTER);
…
if (verify(input)) {
…
status.setText(OK);
return true;
} else {
…
status.setText("Please enter a number.");
return false;
}
如这里所建议的,一种补充方法可能包括一个文档监听器(DocumentListener)。
import java.awt.*;
import javax.swing.*;
/**
* @see http://stackoverflow.com/a/44861290/230513
* @see http://stackoverflow.com/a/11818183/522444
*/
public class VerifierEg {
private static final String ZERO = "0.0";
private static final String OK = "Values OK.";
private JTextField field1 = new JTextField(ZERO, 5);
private JTextField field2 = new JTextField(ZERO, 5);
private JTextField resultField = new JTextField(ZERO, 10);
private JLabel status = new JLabel(OK, JLabel.CENTER);
private void createAndShowGui() {
resultField.setEditable(false);
resultField.setFocusable(false);
JPanel mainPanel = new JPanel();
final JTextField[] fields = {field1, field2};
mainPanel.add(field1);
mainPanel.add(new JLabel(" x "));
mainPanel.add(field2);
mainPanel.add(new JLabel(" = "));
mainPanel.add(resultField);
for (JTextField field : fields) {
field.setInputVerifier(new MyInputVerifier(field));
}
JFrame frame = new JFrame("VerifierEg");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(mainPanel);
frame.add(status, BorderLayout.SOUTH);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private void calcProduct() {
double d1 = Double.parseDouble(field1.getText());
double d2 = Double.parseDouble(field2.getText());
double prod = d1 * d2;
resultField.setText(String.valueOf(prod));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
VerifierEg eg = new VerifierEg();
eg.createAndShowGui();
}
});
}
/**
* @see http://stackoverflow.com/a/11818946/230513
*/
private class MyInputVerifier extends InputVerifier {
private JTextField field;
private double value;
public MyInputVerifier(JTextField field) {
this.field = field;
}
@Override
public boolean shouldYieldFocus(JComponent input) {
if (verify(input)) {
field.setText(String.valueOf(value));
calcProduct();
status.setText(OK);
return true;
} else {
field.setText(ZERO);
field.selectAll();
status.setText("Please enter a number.");
return false;
}
}
@Override
public boolean verify(JComponent input) {
try {
value = Double.parseDouble(field.getText());
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
}
我正在做一个简单的程序,要求用户输入0-19之间的五个数字。我想在每个数字后面添加一些东西(比如if语句),以确保它在这个范围内。如果不是,程序应该说“请再读指令”,然后system.exit(0)。这段代码是相关的: 如有任何帮助,将不胜感激。
问题内容: Python如何接受用户输入,并验证? 问题答案: 完成此操作的最简单方法是将方法置于循环中。当输入错误时使用,当你感到满意时使用。 当你的输入可能引发异常时 使用和检测用户何时输入了无法解析的数据。 实施你自己的验证规则 如果要拒绝Python可以成功解析的值,则可以添加自己的验证逻辑。 结合异常处理和自定义验证 以上两种技术都可以组合成一个循环。 将其全部封装在一个函数中 如果你需
问题内容: 因此,我几乎搜索了单词“ string”,“ python”,“ validate”,“ user input”等等的每个排列,但是我还没有找到一种适合我的解决方案。 我的目标是提示用户是否要使用字符串“ yes”和“ no”进行另一笔交易,我认为字符串比较在Python中是一个相当简单的过程,但是有些不起作用对。我使用的是Python 3.X,据我所知,输入应使用字符串而不使用原始输
这是我刚接触Python时就一直在阅读的一本书中的一些代码……这一部分按它应该的方式工作 我的困境是…我需要验证输入是什么…因此,如果用户输入的是一个字符串(比如“五”而不是数字),而不是q或数字,它会告诉他们“很抱歉,“五”是无效的。请重试…然后它会再次提示用户输入。我是Python新手,一直在为这个简单的问题绞尽脑汁 *更新**因为我没有足够的积分来为我自己的问题添加答案,所以我在这里发布这个
我的页面中有h: selectOneMenu组件。用户必须在那里选择“是”或“否”,初始值为null(标记为“未知”)。在bean中它是布尔值,因此可以为null。如果用户选择了有效值,例如“是”,则点击Next,保存在bean中。 现在用户可以返回此页面,并选择“未知”,这不是一个有效的值。当用户现在点击下一步时,会显示错误消息。可以,但值会更改为“是”。它从bean更新。这样它会更改用户输入的
我试图理解如何使用JAAS保护JavaEE应用程序。 事实上,我知道如何在EJB中使用规则,但是,我不知道如何在web层中验证用户,例如创建一个简单的JSF页面,使用登录表单,检查给定的用户名 通常的做法是什么?我希望有尽可能多的独立解决方案。