问题描述
importjava.awt.*;importjavax.swing.*;importjavax.swing.event.*;publicclassJListDemoextendsJFrame{Containercontainer;JTextFieldselectedText;JListlist;JPanelselectedColor;publicJListDemo(){container=getContentPane();container.setLayout(newBorderLayout());Color[]colors={Color.orange,Color.pink,Color.red,Color.black,Color.blue,Color.cyan,Color.green,Color.lightGray};list=newJList(colors);JScrollPanescrollpane=newJScrollPane(list);selectedText=newJTextField(20);selectedColor=newJPanel();selectedColor.setPreferredSize(newDimension(20,20));container.add(selectedText,BorderLayout.NORTH);container.add(scrollPane,BorderLayout.CENTER);container.add(selectedColor,BorderLayout.SOUTH);list.setCellRenderer(newColorRenderer());list.addListSelectionListener(newListSelectionListener(){publicvoidvalueChangeed(ListSelectionEventevent){Colorc=(Color)list.getSelectedValue();selectedText.setText("选择颜色:"+"R="+c.getRed()+"G="+c.getGreen()+"B="+c.getBlue());selectedColor.setBackground(c);}});setSize(300,200);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicstaticvoidmain(String[]args){newJListDemo();}}编译错误如下,小弟新手,麻烦大家说详细一些,谢谢JListDemo.java:21:找不到符号符号:变量scrollpane位置:类JLlistDemocontainer.add(scrollPane,BorderLayout.CENTER);JListDemo.java:23:找不到符号符号:类ColorRenderer位置:类JListDemolist.setCellRenderer(newColorRenderer());JListDemo.java:24:(匿名JListDemo$1)s不是抽象的,并且未覆盖java.swing.event.ListSelectionListener中的抽象方法valueChanged(javax.swing.event.ListSelectionEvent)list.addListSelectionListener(newListSelectionListener3错误
解决方案
解决方案二:
container.add(scrollPane,BorderLayout.CENTER);==>container.add(scrollpane,BorderLayout.CENTER);ColorRenderer好像没有这个类。不知道是啥publicvoidvalueChangeed(ListSelectionEventevent)==>publicvoidvalueChanged(ListSelectionEventevent)注:你应该用eclipse来编码,这些编译问题一下就看出来了
解决方案三:
应该是classpath不对,需要引入ColorRenderer所在的jar包
解决方案四:
恩,谢谢楼上的两位,小弟新手,所以在用UE,我是看着java实用程序设计100例这本书敲得,可能是环境变量配置有点问题。麻烦有练习过这本书上例子的朋友,再指导下,谢谢楼上两位的帮助
解决方案五:
ColorRenderer的代码没有完成,下面是代码importjava.awt.Color;importjava.awt.Component;importjavax.swing.JLabel;importjavax.swing.JList;importjavax.swing.ListCellRenderer;importjavax.swing.border.MatteBorder;//彩色列表框的Renderer,须实现接口ListCellRendererpublicclassColorRendererextendsJLabelimplementsListCellRenderer{//实现接口中的getListCellRendererComponent方法publicComponentgetListCellRendererComponent(JListlist,Objectobj,introw,booleansel,booleanhasFocus){if(hasFocus||sel){//设置选中时的边界setBorder(newMatteBorder(2,10,2,10,list.getSelectionBackground()));}else{//设置未选中时的边界setBorder(newMatteBorder(2,10,2,10,list.getBackground()));}Colorc=(Color)obj;//得到该行的颜色值setForeground(c);//设置颜色setText(c.toString());//设置文本returnthis;}}
解决方案六:
编译的时候,用下面的命令javac-classpath需要加载的类路径需要编译的source
解决方案七:
谢谢楼上的朋友,很详细
解决方案八:
估计也就是环境变量没设置好!