public class BaiDuKnows extends JFrame implements ListSelectionListener
{
//创建列表
private JList jl=new JList()
private JLabel label =new JLabel("香蕉苹果大鸭梨等待你的选择!")
//创建字符串数组
private String[] str={"香蕉","苹果","大鸭梨"}
//创建复选框数组
public BaiDuKnows()
{
//设置列表的数据模型
jl.setListData(str)
//为列表注册ListSelectionEvent监听器
jl.addListSelectionListener(this)
jl.setBounds(0, 0, 150, 200)
label.setBounds(180, 0, 200, 200)
this.add(jl)
this.add(label)
this.setLayout(null)
this.setBounds(100,100,360,250)
this.setVisible(true)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
//实现ListSelectionListener接口中的事件处理方法
public void valueChanged(ListSelectionEvent e)
{
Object obj=((JList)e.getSource()).getSelectedValue()
if(obj.equals("香蕉"))
{
label.setText("你选的是banana")
}
else if(obj.equals("苹果"))
{
label.setText("你选的是apple")
}
else if(obj.equals("大鸭梨"))
{
label.setText("你选的是pear")
}
else
{
label.setText("你选的是球!!")
}
}
public static void main(String[] args)
{
new BaiDuKnows()
}
}
因为鼠标按下的时候会触发事件,鼠标放开的时候又会触发一次事件。你可以判断event.getValueIsAdjusting(),只有第一次鼠标按下的时候才会返回true
动作事件监听用的是匿名内部类吧,而且一般是在方法中。在方法中定义的类只能访问方法中final的属性,也能访问外部类的属性。
你的list和jtextField对象是在不同的地方创建的吧。你可以在创建list对象时,用final来修饰试一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)