这是一个什么问题啊,那里错了?

zhangzhexin_81 2005-11-20 09:52:13
请大家帮我看看下面这段代码,那里错了?
import java.awt.*;
import java.awt.event.*;
class P255_3 extends Frame
{

List Vegetable=new List();
List Fruit=new List();
Choice choose=new Choice();
Panel P1=new Panel();

public P255_3(String title)
{
super(title);
P1.setLayout(new BorderLayout());
choose.addItem("");
choose.addItem("蔬菜");
choose.addItem("水果");
P1.add(choose,BorderLayout.NORTH);
add(P1);
addFruit( Fruit);
addVegetable( Vegetable);
choose.addItemListener(new MyChoiceItem());
}

public void addFruit( List L)
{
L.add("苹果");
L.add("椰子");
L.add("波罗");
L.add("梯子");
L.add("西瓜");
L.add("桃");
L.add("荔枝");
}
public void addVegetable( List L)
{
L.addItem("莴笋",-1);
L.addItem("空心菜",-1);
L.addItem("冬瓜",-1);
L.addItem("南瓜",-1);
L.addItem("丝瓜",-1);
L.addItem("笋子",-1);
L.addItem("豆芽",-1);
L.addItem("菠菜",-1);
L.addItem("芹菜",-1);
}
class MyChoiceItem implements ItemListener
{
void itemStateChanged(ItemEvent e)
{
if (e.getItem()=="蔬菜")
{
P1.add( Vegetable,BorderLayout.CENTER);
P1.remove(Fruit,BorderLayout.CENTER);
}

if (e.getItem()=="水果")
{
P1.remove( Vegetable);
P1.add( Fruit);
}

}
}
public static void main(String args[])
{
P255_3 test=new P255_3("www.it315.org");
test.setSize(400,400);
test.setVisible(true);
}


}

编译的时候老是报告:
Exception in thread "main" java.lang.NoClassDefFoundError: P255_3/java
是怎么回事呢?
...全文
317 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小志 2005-11-27
  • 打赏
  • 举报
回复
代码没错了,但我不知道你要实现什么功能
import java.awt.*;
import java.awt.event.*;
class P255_3 extends Frame
{

List Vegetable=new List();
List Fruit=new List();
Choice choose=new Choice();
Panel P1=new Panel();

public P255_3(String title)
{
super(title);
P1.setLayout(new BorderLayout());
choose.addItem("");
choose.addItem("蔬菜");
choose.addItem("水果");
P1.add(choose,BorderLayout.NORTH);
add(P1);
addFruit( Fruit);
addVegetable( Vegetable);
choose.addItemListener(new MyChoiceItem());
}

public void addFruit( List L)
{
L.addItem("苹果");
L.addItem("椰子");
L.addItem("波罗");
L.addItem("梯子");
L.addItem("西瓜");
L.addItem("桃");
L.addItem("荔枝");
}
public void addVegetable( List L)
{
L.addItem("莴笋");
L.addItem("空心菜");
L.addItem("冬瓜");
L.addItem("南瓜");
L.addItem("丝瓜");
L.addItem("笋子");
L.addItem("豆芽");
L.addItem("菠菜");
L.addItem("芹菜");
}
class MyChoiceItem implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if (e.getItem()=="蔬菜")
{
P1.add( Vegetable,BorderLayout.CENTER);
P1.remove(Fruit);
}

if (e.getItem()=="水果")
{
P1.remove( Vegetable);
P1.add( Fruit);
}

}
}
public static void main(String args[])
{
P255_3 test=new P255_3("www.it315.org");
test.setSize(400,400);
test.setVisible(true);
}


}
niko7 2005-11-27
  • 打赏
  • 举报
回复
1、interface 中的方法默认都是 public 的,而且也只能是 public 的。(在 interface 中的方法前 写明 public 是多余的。)

2、实现interface的方法的时候必须要保持可访问域的一致性,即 public 。

3、然而 class 中的方法 默认是“默认”的,不是public,所以必须写明。
quincy1984 2005-11-24
  • 打赏
  • 举报
回复
三种可能:
1.类名写错了
2.classpath设错了
3.有一些类没有用import导入~~~~`
SensiblesImon 2005-11-24
  • 打赏
  • 举报
回复
同意楼上
但为什么要加 PUBLIC?
zhangzhexin_81 2005-11-24
  • 打赏
  • 举报
回复
另外在JCreator里面怎样设置classpath呢?
zhangzhexin_81 2005-11-24
  • 打赏
  • 举报
回复
另外在JCreator里面怎样设置classpath呢?
zhangzhexin_81 2005-11-24
  • 打赏
  • 举报
回复
就是啊,为什么要在方法 itemStateChanged(ItemEvent e) 前面加一个public呢?
我在JCreator里面查到 ItemListener 接口的定义如下:

public interface ItemListener extends EventListener {

/**
* Invoked when an item has been selected or deselected by the user.
* The code written for this method performs the operations
* that need to occur when an item is selected (or deselected).
*/
void itemStateChanged(ItemEvent e);

}
其中的 itemStateChanged 方法也不是public 的呀 ,况且这样添加public以后,编译的时候出现这样的信息:

--------------------Configuration: <Default>--------------------
Note: G:\java\P255_3.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.

Process completed.

这又是怎么回事呢?
mar_lgl 2005-11-24
  • 打赏
  • 举报
回复
public void itemStateChanged(ItemEvent e)
{
if (e.getItem()=="蔬菜")
{
P1.add( Vegetable,BorderLayout.CENTER);
P1.remove(Fruit);
}

加一个public ,删除P1.remove(Fruit,BorderLayout.CENTER)中的BorderLayout.CENTER,就ok了。
zhangzhexin_81 2005-11-23
  • 打赏
  • 举报
回复
在命令行窗口中报的错为:

P255_3.java:49: itemStateChanged(java.awt.event.ItemEvent) in P255_3.MyChoiceItem cannot implement itemStateChanged(java.awt.
event.ItemEvent) in java.awt.event.ItemListener; attempting to assign weaker access privileges; was public
void itemStateChanged(ItemEvent e)
^
Note: P255_3.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
1 error

在Jcreator中报的错为:

itemStateChanged(java.awt.event.ItemEvent) in p255_3.MyChoiceItem can not implement itemStateChanged(java.awt.event.ItemEvent) in java.awt.event.ItemListener;attempting to assign weaker access privileges;was public

guyehanxing 2005-11-22
  • 打赏
  • 举报
回复
不过根据你的报错信息看有点象Classpath设置错误
guyehanxing 2005-11-22
  • 打赏
  • 举报
回复
P1.remove(Fruit,BorderLayout.CENTER);这行也有错误
应该改成P1.remove(Fruit);当去除组建时不应指定布局格式,只须指明组建对象名
guyehanxing 2005-11-22
  • 打赏
  • 举报
回复
void itemStateChanged(ItemEvent e)这行有错误
应该是public void itemStateChanged(ItemEvent e)重写接口方法时方法类型应与原接口方法完全一致。
snowmansh 2005-11-22
  • 打赏
  • 举报
回复
估计Classpath设置错误.

试试看javac -classpath=.\ ...

trumplet 2005-11-22
  • 打赏
  • 举报
回复
估计你是在命令行这样运行的:java P255_3.java

这样写试试:java P255_3
zhangzhexin_81 2005-11-21
  • 打赏
  • 举报
回复
有谁能够帮我看看吗?

62,624

社区成员

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

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