黑马程序员技术交流社区
标题:
关于GUI的问题,求帮助
[打印本页]
作者:
侯凯斌
时间:
2013-1-31 15:20
标题:
关于GUI的问题,求帮助
本帖最后由 侯凯斌 于 2013-2-18 11:45 编辑
有两个问题
1 有时候我运行的时候TextArea 不会显示出来 不知道是不是myeclipse的bug还是代码问题
2 为什么我的TextField 和TextArea 要设置成final 下面才能访问呢?
public class test {
public static void main(String[] args) {
Frame f = new Frame("窗体");
f.setSize(600, 400);// 设置宽 高
f.setLocation(400, 150);// 设置初始位置
// f.setBounds() 设置 坐标 宽 高
// 设置布局方式
f.setLayout(new FlowLayout());
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 创建单行文本框组件
final TextField tf = new TextField(30);
// 把文本框组件绑定到窗体
f.add(tf);
Button b2 = new Button("提交");
f.add(b2);
// 创建多行文本框
final TextArea ta = new TextArea(10, 80);
f.add(ta);
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
ta.append(text+"\r\n");
tf.setText("");
}
});
}
}
复制代码
作者:
朱玉玺
时间:
2013-2-1 10:17
本帖最后由 朱玉玺 于 2013-2-1 10:21 编辑
因为你是内部类调用外部类的局部变量,所以要加final,另外,写GUI最好不要把这些实现,写在main方法中;可以把GUI整体作为一个类,然后main中创建这个类的实例,否则由于main的特殊性,容易导致这样那样的问题。至于为什么要加final,你可以想一下,当你调用ta的时候,main函数已经执行完了,textArea作为局部变量,此时已经不存在了,那你怎么才能找到textArea?所以需要加final,把它定义成全局变量~
作者:
侯凯斌
时间:
2013-2-1 11:06
非常感谢,我明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2