Java 如何使文本字段水平且不可编辑?
我有一个小程序,它将两个数字相加,并在第三个文本框中显示它们的总和 我希望文本框水平排列,但更重要的是,我需要第三个文本框是不可编辑的Java 如何使文本字段水平且不可编辑?,java,applet,awt,textfield,Java,Applet,Awt,Textfield,我有一个小程序,它将两个数字相加,并在第三个文本框中显示它们的总和 我希望文本框水平排列,但更重要的是,我需要第三个文本框是不可编辑的 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Question extends Applet implements ActionListener { TextField firstNum, secondNum, resultNum; p
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Question extends Applet implements ActionListener
{
TextField firstNum, secondNum, resultNum;
public Question()
{
setLayout(new GridLayout(3, 2, 10, 15));
setBackground(Color.cyan);
firstNum = new TextField(15);
secondNum = new TextField(15);
resultNum = new TextField(15);
secondNum.addActionListener(this);
add(new Label("Enter First Number"));
add(firstNum);
add(new Label("Enter Second Number"));
add(secondNum);
add(new Label("S U M"));
add(resultNum);
}
public void actionPerformed(ActionEvent e)
{
String str1 = firstNum.getText();
double fn = Double.parseDouble(str1);
double sn = Double.parseDouble(secondNum.getText());
resultNum.setText("Sum is " + (fn+sn));
}
}
要水平排列
TextField
组件,请不要将它们直接添加到小程序中。相反,创建一个面板
,给它一个流程布局
,并将文本字段
组件添加到面板
。然后可以将面板
直接添加到小程序中。确保小程序的宽度足以并排容纳所有三个框,否则布局会将第三个框堆叠在第一个框下
注意:我会为您测试这个,但至少五年来没有浏览器支持小程序
要使第三个TextField
不可编辑,您需要使用setEnabled()
方法<如果您使用的是JTextField
,则code>setEditable()将是完成相同任务的方法,而不是使用的简单AWTTextField
。你应该养成看问题的习惯,在那里很容易找到答案
resultNum.setEnabled(false);
请记住,禁用的框将显示为灰色,这可能在视觉上不具吸引力。解决方案是转换为Java Swing,这将允许您使用
setEditable
,这只会阻止用户在不改变外观的情况下点击框。Swing还允许您以更复杂和更灵活的方式使用布局管理器。在继续之前,我只想确保您了解您没有使用Swing,并且小程序已经过时。您确定这是您希望采用的策略吗?这种方法至少会让你落后15年。@MarsAtomic是的。我需要第三个文本框不可编辑。-人们不再编写小程序或使用AWT了。所以,如果你想继续沿着这条路走下去,你需要自己解决问题。其中的一部分就是阅读API以找到合适的方法来使用。为什么?即使在我仍然支持applet的时候,如果是布局/组件问题,我建议首先在面板(或JPanel
)中对其进行排序,该面板显示在Frame
(或JFrame
)中。原因是启动和调试框架更简单。一旦修复,面板就可以直接放入小程序中。现在,大多数人甚至不能运行小程序,因此我们提供帮助的机会受阻。至于AWT,它在很久以前就被取代了,我们大多数有经验的人已经忘记了大部分细节!顺便说一句,这是网格布局的外观,这种布局比将所有标签/字段组合放在一行要好。为什么用户想要“一行”?提供整个GUI的预期布局的ASCII艺术或简单绘图。“…或者布局将在第一个框下堆叠第三个框。”这就是为什么流布局不是我布局标签/字段对的第一选择之一。我倾向于网格袋布局,或者OP已经在使用的“穷人的等价物”,一种网格布局,它将使所有单元格都具有相同的大小。A可以产生与网格袋布局相同的结果,但需要更多的努力。@AndrewThompson我听到了,但他坚持采用无摆动的方法。我已经有一段时间没有接触AWT了,所以可能会有一个更好的布局适合问题的参数,但我故意排除了Swing解决方案。好吧,忘记组布局,但是GridBagLayout
与FlowLayout
一样,也是AWT的一部分。