菜鸟遇到菜问题,请教一下啦 :)

netcrawller 2001-08-09 03:43:41
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GUI
{
public static void main(String args[])
{
JFrame f=new JFrame("Hello,JFram");
Container c=f.getContentPane(); //获得 f 的内容窗格,以容器变量 c 来引用
c.setLayout(new BorderLayout());

JTextField msg=new JTextField("This is a TextField");
JButton but_ok=new JButton("OK");
JButton but_cancel=new JButton("Cancel");

c.add(but_ok,BorderLayout.NORTH);
c.add(but_cancel,BorderLayout.SOUTH);
c.add(msg,BorderLayout.CENTER);

f.pack();
f.setSize(200,100);
f.setResizable(false);
f.show();


but_cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});//Event of Button Cancel

but_ok.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{

msg.setText("Hello,Java"); ///// 这里出错 代码见后////////
}
});

//以下处理关闭事件

f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

}



==============
GUI.java:40: Attempt to use a non-final variable msg from a different method. From enclosing blocks, only final local variables are available.
msg.setText("Hello,Java");
^
1 error
Exit code: 1
There were errors
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
longaway 2001-08-09
  • 打赏
  • 举报
回复

关于变量作用域的问题。

关键 JTextField msg;
要放在调用方法可访问的地方。

msg = ...;
赋值语句的位置不是太重要。
kare 2001-08-09
  • 打赏
  • 举报
回复
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GUI
{
//--------------------------
JTextField msg=new JTextField("This is a TextField");

public static void main(String args[])
{
JFrame f=new JFrame("Hello,JFram");
Container c=f.getContentPane(); //获得 f 的内容窗格,以容器变量 c 来引用
c.setLayout(new BorderLayout());
//-----------------------
//JTextField msg=new JTextField("This is a TextField");
//--------------
JButton but_ok=new JButton("OK");
JButton but_cancel=new JButton("Cancel");

lxianfeng 2001-08-09
  • 打赏
  • 举报
回复
只要将JTextField msg=new JTextField("This is a TextField");一句改为:
final JTextField msg=new JTextField("This is a TextField");即可。
chenyun2000 2001-08-09
  • 打赏
  • 举报
回复
MSG变量在内类中不能使用

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧