如何解决如何使文本字段水平且不可编辑?
我有这个小程序,它将两个数字相加并在第三个文本框中显示它们的总和。
我希望文本框水平排列,但更重要的是我需要第三个文本框不可编辑。
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 举报,一经查实,本站将立刻删除。