【问题标题】:If a new Frame show up setEditable(false) , If the user close it setEditable(true)如果一个新的 Frame 出现 setEditable(false) ,如果用户关闭它 setEditable(true)
【发布时间】:2012-05-11 11:22:05
【问题描述】:

我想创建这段代码: 用户输入数值,如果输入字符会抛出异常 该字段将停止工作,然后出现另一个框架并显示错误消息 用户关闭新框架后,一切恢复原状 这意味着该领域将再次发挥作用! 我设法使该领域停止工作,但我不知道用户是否关闭了新框架! 这是我的尝试

public void keyReleased(KeyEvent event) {

try{
double l,h,w;
l=Double.parseDouble(input_length.getText());
w=Double.parseDouble("0"+input_width.getText());
h=Double.parseDouble("0"+input_width.getText());
}

catch(NumberFormatException a){


input_length.setEditable(false);
input_height.setEditable(false);
input_width.setEditable(false);

JFrame ErrorFrame = new JFrame("Error");
JPanel content = new JPanel(); ;
ErrorFrame.setContentPane(content);

ErrorFrame.setSize      (350, 150);
ErrorFrame.setResizable (false);
ErrorFrame.setLocation  (FRAME_X_ORIGIN, 250);

content.setLayout(new FlowLayout());
JLabel text = new JLabel(" ERROR ! please Enter number only ",JLabel.CENTER);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setForeground(Color.red);
content.add(text);
ErrorFrame.setVisible(true);

setDefaultCloseOperation(ErrorFrame.EXIT_ON_CLOSE);
int op = ErrorFrame.getDefaultCloseOperation();

if(op == 1 ){
input_length.setEditable(true);
input_height.setEditable(true);
input_width.setEditable(true);}

}
}

【问题讨论】:

  • 您是否设置为使用JFrame 作为您的错误消息?我认为JDialog 会更好。 docs.oracle.com/javase/6/docs/api
  • 我必须使用 JFrame ,这是他们想要的

标签: java swing exception jframe jtextfield


【解决方案1】:

1)。不要将新的JFrame 用于错误消息 - 使用JDialog Here is how

2)。 h=Double.parseDouble("0"+input_width.getText()); 我认为你的意思是 input_height.getText(),而不是 input_width.getText()

3)。显示您的错误对话框后,只需清除您的文本字段 - 没关系。当用户关闭它时 - 他会看到它们是空的。

【讨论】:

  • 好吧,我们的课程是关于 JFrame 的,所以他们不想使用 JFrame 以外的用户! + 如果我清除了文本字段,它将恢复正常?
  • + 谢谢!我没有注意到这里的错误
【解决方案2】:
  1. 如果您选择模式对话框来显示错误消息,则无需更改字段的可编辑状态。
  2. 就我个人而言,如果每次我打错字时都会显示一个对话框,我会非常恼火。例如,在无效输入时将文本字段的背景颜色更改为红色,并禁用“确定”按钮(或作为用户指示您已完成编辑的任何机制)对 IMO 更友好。您甚至可以在面板中显示指示错误的标签,或工具提示,...。
  3. 如果您想对文本字段中的文本更新做出反应,我还建议您使用 DocumentListener 而不是 KeyListener

我为什么建议选择另一种机制来通知用户错误的示例: 我在文本字段中粘贴了一个无效值(例如3x456),然后弹出一个对话框。现在我想使用箭头键导航到错误并更正它。这意味着我必须向左导航 3 个位置才能删除 x。如果我使用箭头键(也是键),我会在导航过程中再看到此对话框 3 次。

【讨论】:

  • 好吧,我还是初学者 我还没有了解 DocumentListener 我真的很感谢你提供的重要信息,但我只接受了 JFrame 、 ActionListner 和 Keylistner 我被要求这样做只有JFrame 和 setEditable
猜你喜欢
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2014-03-08
  • 1970-01-01
  • 2021-02-21
  • 2011-11-06
  • 1970-01-01
相关资源
最近更新 更多