微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使文本字段水平且不可编辑?

如何解决如何使文本字段水平且不可编辑?

我有这个小程序,它将两个数字相加并在第三个文本框中显示它们的总和。

https://pastebin.com/4ga1brD1

我希望文本框水平排列,但更重要的是我需要第三个文本框不可编辑。

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 组件,请不要将它们直接添加到 Applet。相反,创建一个 Panel,给它一个 FlowLayout 并将您的 TextField 组件添加到 Panel。然后您可以将 Panel 直接添加到您的 Applet。确保您的 Applet 足够宽,可以并排放置所有三个框,否则布局会将第三个框堆叠在第一个框下方。

注意:我会为你测试这个,但至少五年来没有浏览器支持小程序。

要使第三个 TextField 不可编辑,您需要使用 setEnabled() 方法。如果您使用的是 setEditable(),而不是您正在使用的简单 AWT JTextField,那么 TextField 将是完成相同事情的方法。您应该养成查看 official documentation 的习惯,那里很容易找到答案。

resultNum.setEnabled(false);

请记住,禁用的框会显示为灰色,这可能在视觉上没有吸引力。解决方案是转换为 Java Swing,这将允许您使用 setEditable,这只会阻止您的用户在不更改外观的情况下单击该框。 Swing 还允许您使用更加复杂和灵活的布局管理器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。