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()将是完成相同任务的方法,而不是使用的简单AWT
TextField
。你应该养成看问题的习惯,在那里很容易找到答案

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的一部分。