import java.awt.*;
import java.awt.event.*;public class TaskList extends Frame implements ActionListener
{
private Button b1 = new Button("确定");
private Button b2 = new Button("删除");
private Button b3 = new Button("增加优先级");
private Button b4 = new Button("降低优先级");
private TextField text = new TextField(15); private List list = new List();
private Label task_label = new Label("工作事项");
private Label priority_label = new Label("改变事件优先级");
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
}
public void setup(){
Panel p = new Panel(new FlowLayout());
p.add(b1);
p.add(b2);
Panel q = new Panel(new FlowLayout());
q.add(b3);
q.add(priority_label);
q.add(b4);
Panel r = new Panel(new FlowLayout());
r.add(task_label);
r.add(text);
setLayout(new GridLayout(4,1));
add(r);
add(q);
add(list);
add(p);
}
public TaskList(){
super("工作事项表");
this.setup();
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
list.addActionListener(this);
addWindowListener(new WindowCloser());
pack();
setVisible(true);
} private void handleAdd(String s){
list.add(s);
list.select(list.getItemCount()-1);
text.setText(" ");
}
private void handleDel(int position){
list.remove(position);
list.select(position);
}
private void handleup(int position){
String s = list.getItem(position);
list.remove(position);
list.add(s,position-1);
list.select(position-1);
}
private void handledown(int position){
if(position<list.getItemCount()-1){
String item = list.getItem(position);
list.remove(position);
list.add(item,position+1);
list.select(position+1);
}
}
public void actionPerformed(ActionEvent e){
if((e.getSource()==b1)&&(!text.getText().equals(" ")))
handleAdd(text.getText().trim());
else if((e.getSource()==b2)&&(list.getSelectedIndex()>=0))
handleDel(list.getSelectedIndex());
else if((e.getSource()==b3)&&(list.getSelectedIndex()>0))
handleup(list.getSelectedIndex());
else if((e.getSource()==b4)&&(list.getSelectedIndex()>=0))
handledown(list.getSelectedIndex());
else if((e.getSource()==list))
text.setText(list.getSelectedItem());
text.requestFocus();
} public static void main(String[] args){
TaskList t = new TaskList();
}
}请问,方法handleDown中的位置参数是4,而总事件数是5,那么position<list.getItemCount()-1应该不成立,而if主体部分应该不会执行啊!可是,结果看起来很正常啊?请教原因!
象你说的那种是,position是3,list.getItemCount()是5, 输出一下就知道了!
没有出现楼主所说的问题啊??
handledown(list.getSelectedIndex());
这一句中的
getSelectedIndex方法返回的值是从0开始计数的
getItemCount()获取列表中的项数
后来恍然大悟原来是JList列表框,以前都不知道awt下的列表框叫List,太垃圾了
System.out.println("position :"+position);
System.out.println("ItemCount - 1:"+list.getItemCount()-1);
if(position<list.getItemCount()-1){
String item = list.getItem(position);
list.remove(position);
list.add(item,position+1);
list.select(position+1);
}
}
getSelectedIndex() 这个是你选中才会有具体第几个,未选中状态是-1...选中第1个的话是从1开始..