问答题
本题的功能是对列表项的操作,包括删除、添加和反选。窗口中有两个列表框和5个按钮,按钮标签代表着移除列表项的方向,“>”代表只移除选中的列表项,“>>”代表移除所有的列表项,“!”代表反向选择列表项。
import jav- a.awt.*;
import java.awt.event.*;
class java3 extends Frame implements ActionListener&ItemListener
final static int ITEMS=10;
List ItList=new List(ITEMS,true);
List rtList=new List(0,true);
java3()
super("java3");
addWindowListener(new WindowAdapter()
public void windowClosing(WindowEvent e)
System.exit(0);
);
GridBagLayout gbl=new GridBagLayout();
setLayout(gbl);
add(ItList,0,0,1,5,1.0,1.0);
add(rtList,2,0,1,5,1.0,1.0);
ItList.addActionListener(this);
ItList.addItemListener(this);
rtList.addActionListener(this);
rtList.addItemListener(this);
Button b;
add(b=new Button(">"),1,0,1,1,0,1.0); - b.addActionListener(this);
add(b=new Button(">>"),1,1,1,1,0,1.0);b.addActionListener(this);
add(b=new Button("<"),1,2,1,1,0,1.0);b.addActionListener(this);
add(b=new Button("<<"),1,3,1,1,0,1.0);b.addActionListener(this);
add(b=Flew Button("!"),1,4,1,1,0,1.0);b.addActionListener(this);
for(int i=0;i<ITEMS;i++)
ltList.add("item"+i);
pack();
show();
void add(Component comp,
int x,int y,int w,int h,double weightx,double weighty)
GridBagLayout gbl=(GridBagLayout)getLayout();
GridBagConstraints c=new GridBagConstraints(); - c.fill=GridBagConstraints.BOTH;c.gridx=x;c.gridy=y;c.gridwidth=w;c.gridheight=h;c.weightx=weightx;c.weighty=weighty;
add(comp);
gbl.setConstraints(comp,c);
void reverseSelections(List 1)
for(int i=0;i<1.length();i++)
if(l.isIndexSelected(i))
l.deselect(i);
else
l.select(i);
void deselectAll(List 1)
for(int i=0;i<1.getItemCount();itt)
l.deselect(i);
void replaceItem(List 1,String item)
for(int i=0;i<1.getItemCount();i+t)
if(1.getItem(i).equals(item))
l.replaceItem(item +"*",i);
void move(List l1,List 12,boolean all)
if(all)
for(int i=0;i<l1.getItemCount();i++)
l2.add(l1.getItem(i));
l1.removeAll();
else
String[]items=l1.getSelectedItems();
int[]itemIndexes=l1.getSelectedIndexes();
deselectAll(l2);
for(int i=0;i<items.length;i++)
l2.add(items[i]);
l2.select(l2.getItemCount()=1);
if(i==0)
l2.makeVisible(l2.getItemCount()=1);
for(int i=itemIndexes.length-1;i>=0;i--)
l1.remove(itemIndexes[i]);
public void actionPerformed(ActionEvent evt)
String arg=evt.getActionCommand();
if(">".equals(arg))
move(ltList,rtList,false);
else if(">>".equals(arg))
move(ltList,rtList,true);
else if("<".equals(arg))
move(rtList,ltList,false);
else if("<<".equals(arg))
move(rtList,ltList,true);
else if("!".equals(arg))
if(ltList.getSelectedItems().length>0)
reverseSelections(ltList);
else if(rtList.getSelectedItems().length>0)
reverseSelections(rtList);
else
Object target=evt.getSource();
if(target==rtList || target==ItList)
replaceItem((List)target,arg);
public void itemStatedChanged(ItemEvent ent)
List target=(List)evt.getSource();
if(target==ltList)
deselectAll(rtList);
else if(target==rtList)
deselectAll(ltList);
public static void main(String[]args)
new java3();
【参考答案】
第1处:extends Frame implements ActionListener,ItemListener
......
(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)