import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class JListDemo extends JFrame {

Container container;
JTextField selectedText;
JList list;
JPanel selectedColor;

public JListDemo() {
container=getContentPane();
container.setLayout(new BorderLayout());
Color[]colors = {Color.orange,Color.pink,Color.red,Color.black,Color.blue,Color.cyan,Color.green,Color.lightGray};
list = new JList(colors);
JScrollPane scrollpane = new JScrollPane(list);
selectedText = new JTextField(20);
selectedColor = new JPanel();
selectedColor.setPreferredSize(new Dimension(20,20));
container.add(selectedText,BorderLayout.NORTH);
container.add(scrollPane,BorderLayout.CENTER);
container.add(selectedColor,BorderLayout.SOUTH);
list.setCellRenderer(new ColorRenderer());
list.addListSelectionListener(new ListSelectionListener() {

public void valueChangeed(ListSelectionEvent event) {

Color c = (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);
}

public static void main(String[] args) {
new JListDemo();
}
}编译错误如下,小弟新手,麻烦大家说详细一些,谢谢
JListDemo.java:21: 找不到符号
符号: 变量 scrollpane
位置:  类   JLlistDemo
                            container.add(scrollPane,BorderLayout.CENTER);JListDemo.java:23: 找不到符号
符号: 类 ColorRenderer
位置:  类 JListDemo
                            list.setCellRenderer(new ColorRenderer());JListDemo.java:24:(匿名 JListDemo$1)s不是抽象的,并且未覆盖 java.swing.event.ListSelectionListener 中的抽象方法 valueChanged(javax.swing.event.ListSelectionEvent)
                                        list.addListSelectionListener(new ListSelectionListener3错误

解决方案 »

  1.   

    container.add(scrollPane,BorderLayout.CENTER);
    ==>
    container.add(scrollpane,BorderLayout.CENTER);ColorRenderer好像没有这个类。不知道是啥public void valueChangeed(ListSelectionEvent event) 
    ==>
    public void valueChanged(ListSelectionEvent event) 注:你应该用eclipse来编码,这些编译问题一下就看出来了
      

  2.   

    应该是class path不对,需要引入 ColorRenderer 所在的jar包
      

  3.   

    恩,谢谢楼上的两位,小弟新手,所以在用UE,我是看着java实用程序设计100例这本书敲得,可能是环境变量配置有点问题。麻烦有练习过这本书上例子的朋友,再指导下,谢谢楼上两位的帮助
      

  4.   

    ColorRenderer的代码没有完成,下面是代码
    import java.awt.Color;
    import java.awt.Component;import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.ListCellRenderer;
    import javax.swing.border.MatteBorder;//彩色列表框的Renderer,须实现接口ListCellRenderer
    public class ColorRenderer extends JLabel implements ListCellRenderer { //实现接口中的getListCellRendererComponent方法
       public Component getListCellRendererComponent(JList list, Object obj, int row, boolean sel, boolean hasFocus) {
      if (hasFocus || sel) {   //设置选中时的边界
           setBorder(new MatteBorder(2, 10, 2, 10, list.getSelectionBackground()));
          }
          else {  //设置未选中时的边界
             setBorder(new MatteBorder(2, 10, 2, 10, list.getBackground()));
          }
          Color c=(Color)obj;  //得到该行的颜色值
          setForeground(c);  //设置颜色
          setText(c.toString());  //设置文本
      return this;
     }
    }
      

  5.   

    编译的时候,用下面的命令
    javac -classpath 需要加载的类路径 需要编译的source