看看我写的这段代码,寻求解决办法及相关资料(在线等...)

tdy218 2008-04-13 11:51:28
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SwingApplication{
public static void main(String args[]){
JFrame f = new JFrame("Java10-[C.R.S.M]K01");
JButton b = new JButton("Swing Button");
JLabel l = new JLabel("You have click: "+"0 "+"次");
JPanel p = new JPanel();
b.addActionListener(new ButtonHandler());
p.setBorder(BorderFactory.createEmptyBorder(30,30,10,30));
p.setLayout(new GirdLayout(0,1));
f.add(p);
p.add(b);
p.add(l);
f.setSize(80,80);
f.setVisible(true);
}
class ButtonHandler implements ActionListener{ //加上 public 也不对。
public void actionPerformed(ActionEvent e){
numClicks++;
l.setText("You have click: "+numClicks+"次");//输出l后面那个点时没有弹出对应的方法。
}
}
}


出错信息:
--------------------配置: <默认>--------------------
E:\JavaTempFiles\SwingApplication.java:10: 无法从静态上下文中引用非静态 变量 this
b.addActionListener(new ButtonHandler());
^
E:\JavaTempFiles\SwingApplication.java:12: 找不到符号
符号: 类 GirdLayout
位置: 类 SwingApplication
p.setLayout(new GirdLayout(0,1));
^
E:\JavaTempFiles\SwingApplication.java:21: 找不到符号
符号: 变量 numClicks
位置: 类 SwingApplication.ButtonHandler
numClicks++;
^
E:\JavaTempFiles\SwingApplication.java:22: 找不到符号
符号: 变量 numClicks
位置: 类 SwingApplication.ButtonHandler
l.setText("You have click: "+numClicks+"次");
^
E:\JavaTempFiles\SwingApplication.java:22: 找不到符号
符号: 变量 l
位置: 类 SwingApplication.ButtonHandler
l.setText("You have click: "+numClicks+"次");
^
5 错误

处理已完成。

...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdy218 2008-04-13
  • 打赏
  • 举报
回复
大家帮忙看看,谢谢了。小弟刚开始接触。不想老敲书本上的代码,于是就修改了一下。出来就是错的,太打击人了。
书本上的使用的监听器是个匿名的内部类,我把它改了。就是上面那段代码。
tdy218 2008-04-13
  • 打赏
  • 举报
回复
呵呵 网格布局的单词写错了,应该是GridLayout 这样写是没错的 p.setLayout(new GridLayout(0,1));
numClicks 这个变量忘记声明了,见笑了。
改了这两个地方后,还有2个错误,或许更多。有的错误没报出来,并不代表不存在。

改后错误信息:

--------------------配置: <默认>--------------------
E:\JavaTempFiles\SwingApplication.java:10: 无法从静态上下文中引用非静态 变量 this
b.addActionListener(new ButtonHandler());
^
E:\JavaTempFiles\SwingApplication.java:24: 找不到符号
符号: 变量 l
位置: 类 SwingApplication.ButtonHandler
l.setText("You have click: "+numClicks+"次"); //输出l后面那个点时没有弹出对应的方法。

^
2 错误

处理已完成。
goodmrning 2008-04-13
  • 打赏
  • 举报
回复
关注
老紫竹 2008-04-13
  • 打赏
  • 举报
回复
如错误提示
1 GirdLayout 这个类在哪里?你没有import 他, 当然。我也不知道你用的什么组件

2 numClicks 这个属性的声明在哪里?我也没看到。 没有声明,不能使用!
superkarkar 2008-04-13
  • 打赏
  • 举报
回复
连个注释都没有,
tdy218 2008-04-13
  • 打赏
  • 举报
回复
呵呵 我知道了,ButtonHandler是个内部类,调用局部变量时要声明为 final 但是还报错,这句话有问题吗?我知道局部变量的作用域就是改变量所在的方法体。但 内部类调用局部变量时要声明为 final书上也是这样声明的,孙鑫的awt教程上也是这样说的呀!
import java.awt.*;

import javax.swing.*;
import java.awt.event.*;

public class SwingApplication {

private static int numClicks=0;
//private static JLabel l;
public static void main(String args[]) {
JFrame f = new JFrame("Java10-[C.R.S.M]K01");
JButton b = new JButton("Swing Button");
final JLabel l = new JLabel("You have click: " + "0 " + "次");
JPanel p = new JPanel();
b.addActionListener(new ButtonHandler());
p.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
p.setLayout(new GridLayout(0, 1));
f.add(p);
p.add(b);
p.add(l);
f.setSize(80, 80);
f.setVisible(true);
}

static class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
numClicks++;
l.setText("You have click: " + numClicks + "次");// 输出l后面那个点时没有弹出对应的方法。
}
}
}
E:\JavaTempFiles\SwingApplication.java:29: 找不到符号
符号: 变量 l
位置: 类 SwingApplication.ButtonHandler
l.setText("You have click: " + numClicks + "次");// 输出l后面那个点时没有弹出对应的方法。
^
1 错误

处理已完成。
AwL_1124 2008-04-13
  • 打赏
  • 举报
回复
这个修改的很好 你以前的JLabel是局部变量不能在外部调用的...
[Quote=引用 5 楼 wencool 的回复:]
其实不建议你在有main函数的类里里直接加内部类...
你有几处错误需要改下,我把代码给你改了,你自己对照下

Java code
import java.awt.*;

import javax.swing.*;
import java.awt.event.*;

public class SwingApplication {

private static int numClicks=0;
private static JLabel l;
public static void main(String args[]) {
JFrame f = new JFrame("Java10-[C.R.S.M]K01");

[/Quote]
wencool 2008-04-13
  • 打赏
  • 举报
回复
其实不建议你在有main函数的类里里直接加内部类...
你有几处错误需要改下,我把代码给你改了,你自己对照下

import java.awt.*;

import javax.swing.*;
import java.awt.event.*;

public class SwingApplication {

private static int numClicks=0;
private static JLabel l;
public static void main(String args[]) {
JFrame f = new JFrame("Java10-[C.R.S.M]K01");
JButton b = new JButton("Swing Button");
l = new JLabel("You have click: " + "0 " + "次");
JPanel p = new JPanel();
b.addActionListener(new ButtonHandler());
p.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
p.setLayout(new GridLayout(0, 1));
f.add(p);
p.add(b);
p.add(l);
f.setSize(80, 80);
f.setVisible(true);
}

static class ButtonHandler implements ActionListener { // 加上 public 也不对。
public void actionPerformed(ActionEvent e) {

numClicks++;
l.setText("You have click: " + numClicks + "次");// 输出l后面那个点时没有弹出对应的方法。
}
}
}

62,623

社区成员

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

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