Java计算器不允许单个输入
我有一个半完整的java计算器,它不能正常工作。每当我点击“1”按钮时,它不允许我添加更多的。它允许我点击按钮,但它只显示一个“1”,而不允许我点击多次并打印出单数。代码是在NetBeans中完成的,并且正在使用design部分。指向我的代码的链接如下: 我真的很想得到一些帮助,因为这已经在我的设计中创造了一个块。错误位于btn1下的第209行。 我还需要在每个部分下添加相同的标准代码部分,但是如果没有正确的代码,我就无法这样做 侦听器方法如下所示:Java计算器不允许单个输入,java,swing,calculator,Java,Swing,Calculator,我有一个半完整的java计算器,它不能正常工作。每当我点击“1”按钮时,它不允许我添加更多的。它允许我点击按钮,但它只显示一个“1”,而不允许我点击多次并打印出单数。代码是在NetBeans中完成的,并且正在使用design部分。指向我的代码的链接如下: 我真的很想得到一些帮助,因为这已经在我的设计中创造了一个块。错误位于btn1下的第209行。 我还需要在每个部分下添加相同的标准代码部分,但是如果没有正确的代码,我就无法这样做 侦听器方法如下所示: private void btn1Actio
private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {
String btnOneText = btn1.getText( );
txtDisplay.setText(btnOneText);
}
这就是您现在正在做的:
private void btnActionPerformed(java.awt.event.ActionEvent evt) {
String inputState = txtDisplay.getText();
txtDisplay.setText(inputState + ((JButton) evt.getSource()).getText());
}
编辑:修复了铸件周围的括号 虽然帖子不太清楚,但我想你是在点击新的按钮时尝试撰写数字条目 您应该拖动当前的
txtDisplay
内容,然后将新的键文本附加到其中,而不是每次单击按钮时将其删除:
private void btn1ActionPerformed(java.awt.event.ActionEvent evt)
{
String btnOneText = btn1.getText();
String oldTextEntry = txtDisplay.getText();
txtDisplay.setText(oldTextEntry + btnOneText);
}
在第210行,您有:
txtDisplay.setText(btnOneTxt);
这样做的目的是将JTextField txtDisplay的全部内容设置为btnOneTxt。因此,每次单击按钮时,都会将txtDisplay中已有的内容替换为btnOneTxt
您要做的是用按钮文本附加到文本字段中已有的内容,如下所示
txtDisplay.setText(txtDisplay.getText() + btnOneText);
不过,作为旁注,您的GUI代码非常混乱。我不知道你写了多少,或者给了你多少来提示任务,但是你可以考虑把这些按钮存储在一个数组中,这样你就可以用一个循环在所有的函数上执行相同的功能。 <代码> SETTEX/<代码>就是这样,它设置了你提供给字段的文本,丢弃了以前在那里存在的 您可以通过多种方式附加文本 你可以。。。 执行简单的
String
连接
String btnOneText = btn1.getText();
btnOneText = txtDisplay.getText() + btnOneText;
txtDisplay.setText(btnOneText);
你可以。。。
使用StringBuilder
并在每次按下其中一个按钮时追加文本
private StringBuilder displayText = new StringBuilder(128);
//...
displayText.append(btnText);
txtDisplay.setText(displayText);
你可以。。。
将文本直接插入基础文档
本身
try {
Document doc = txtDisplay.getDocument();
doc.insertString(doc.getLength(), btnText, null);
} catch (BadLocationException exp) {
exp.printStackTrace();
}
这种方法不需要您将基础
文档的值提取到字符串,更新字符串(即连接它),然后将字符串重新应用到文档,它将一个字符串
直接注入底层文档
,通常效率更高您只是简单地将txtDisplay替换为btnOneText,而不管您的显示内容是什么?您应该通过读取值并附加btnOneText1)来累积结果。另请参见此。它使用ScriptEngine
计算文本字段中的表达式。2) 为了更快地获得更好的帮助,可以发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。我的意思是在这里发布,而不是在一个很多人都不会关注的链接上。我不是自己编写源代码的,它只是由NetBeans在编辑实际面板时自动完成的。我试图让它更清楚,哈哈