java的列表框2007-05-29 yycnet.yeah.net yyc译列表框与选择框有完全的不同,而不仅仅是当我们在激活选择框时的显示不同,列表框固定在屏幕的指定位置不会改变。另外,一个列表框允许多个选择:如果我们单击在超过一个的项目上,未选择的则表现为高亮度,我们可以选择象我们想要的一样的多。如果我们想察看项目列表,我们可以调用getSelectedItem()来产生一个被选择的项目列表。要想从一个组里删除一个项目,我们必须再一次的单击它。列表框,当然这里有一个问题就是它默认的动作是双击而不是单击。单击从组中增加或删除项目,双击调用action()。解决这个问题的方法是象下面的程序假设的一样重新培训我们的用户。
//: List1.java// Using lists with action()import java.awt.*;import java.applet.*;public class List1 extends Applet {String[] flavors = { "Chocolate", "Strawberry","Vanilla Fudge Swirl", "Mint Chip", "Mocha Almond Fudge", "Rum Raisin", "Praline Cream", "Mud Pie" };// Show 6 items, allow multiple selection:List lst = new List(6, true);TextArea t = new TextArea(flavors.length, 30);Button b = new Button("test");int count = 0;public void init() {t.setEditable(false);for(int i = 0; i < 4; i++)lst.addItem(flavors[count++]);add(t);add(lst);add(b);}public boolean action (Event evt, Object arg) {if(evt.target.equals(lst)) {t.setText("");String[] items = lst.getSelectedItems();for(int i = 0; i < items.length; i++)t.appendText(items[i] + "
");}else if(evt.target.equals(b)) {if(count < flavors.length)lst.addItem(flavors[count++], 0);}else return super.action(evt, arg);return true;}} ///:~
按下按钮时,按钮增加项目到列表的顶部(因为addItem()的第二个自变量为零)。增加项目到列表框比到选择框更加的合理,因为用户期望去滚动一个列表框(因为这个原因,它有内建的滚动条)但用户并不愿意像在前面的例子里不得不去计算怎样才能滚动到要要的那个项目。
然而,调用action()的唯一方法就是通过双击。如果我们想监视用户在我们的列表中的所作所为(尤其是单击),我们必须提供一个可供选择的方法。