public classtest{public static voidmain(String args[]){
Component window1=newComponent();
window1.setBounds(40,40,300,200);
}
}class Component extendsJFrame{
JTextArea textArea1,textArea2;
JMenu menu;
JMenuBar menuBar;
JMenuItem copyItem,cutItem,pasteItem;
Component(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}voidinit(){
textArea1=new JTextArea(6,10);
textArea2=new JTextArea(6,10);//textArea1.setLineWrap(true);//文本自动换行 w//textArea1.setWrapStyleWord(true);//以单词为界自动换行//textArea2.setLineWrap(true);//文本自动换行//textArea2.setWrapStyleWord(true);//以单词为界自动换行
setLayout(newFlowLayout());
copyItem=new JMenuItem("复制(c)");
cutItem=new JMenuItem("剪贴(t)");
pasteItem=new JMenuItem("粘贴(v)");
menuBar=newJMenuBar();
menu=new JMenu("编辑");
menuBar.add(menu);
setJMenuBar(menuBar);//这样写才会变一条菜单
menu.add(copyItem);
menu.add(cutItem);
menu.add(pasteItem);
copyItem.setAccelerator(KeyStroke.getKeyStroke('c'));//设置快捷键
cutItem.setAccelerator(KeyStroke.getKeyStroke('t'));
pasteItem.setAccelerator(KeyStroke.getKeyStroke('v'));
copyItem.setActionCommand("copy");
copyItem.setActionCommand("cut");
copyItem.setActionCommand("paste");
add(newJScrollPane(textArea1));
add(newJScrollPane(textArea2));
DListener dListener1=newDListener(textArea1,textArea2);
(textArea1.getDocument()).addDocumentListener(dListener1);
AListener aListener1=newAListener(textArea1,textArea2);
copyItem.addActionListener(aListener1);
cutItem.addActionListener(aListener1);
pasteItem.addActionListener(aListener1);
}
}class DListener implementsDocumentListener{
JTextArea textArea1,textArea2;
DListener(JTextArea a,JTextArea b){
textArea1=a;
textArea2=b;
}public voidchangedUpdate(DocumentEvent e){
String regex="[\\s\\d\\p{Punct}]+";
String[] word=(textArea1.getText()).split(regex);
Arrays.sort(word);
textArea2.setText(null);for(String a:word){
textArea2.append(a+",");
}
}public void removeUpdate(DocumentEvent e){//这个多了两个抽象方法,现在把他们设置为和上面一样
changedUpdate(e);
}public voidinsertUpdate(DocumentEvent e){
changedUpdate(e);
}
}class AListener implements ActionListener{//快捷键功能并没有debug到
JTextArea textArea1,textArea2;
AListener(JTextArea a,JTextArea b){
textArea1=a;
textArea2=b;
}public voidactionPerformed(ActionEvent e){
String a=e.getActionCommand();if(a.equals("copy"))
textArea2.copy();else if(a.equals("cut"))
textArea2.cut();else if(a.equals("paste"))
textArea1.paste();
}
}