/** * 用户信息输入 * @author 索广宇 *@date 2011/4/23 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class UserJFrame extends JFrame implements ActionListener, MouseListener { /** * */ private static final long serialVersionUID = 1L; private int number=1;//编号 private JTextField text_number,text_name; private JRadioButton radio_male,radio_female; private JComboBox combox_province,combox_city; private JButton btn_add; private JTextArea text_user; private Object cities[][]; private JPopupMenu popMenu;//右键快捷菜单 public UserJFrame(Object provinces[],Object cities[][]) { //设置框架 super("输入用户信息"); this.setBounds(300,240,360,200); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.getContentPane().setLayout(new GridLayout(1,2));//设置内容窗格的布局,一行两列 text_user=new JTextArea(); text_user.setEditable(false); text_user.addMouseListener(this);//让文本区注册鼠标事件监听器 this.getContentPane().add(text_user);//把文本区添加到窗格的左半部分 popMenu=new JPopupMenu();//定义一个快捷菜单 String popMenuItemStr[]={"剪切","复制","粘贴"};//定义快捷菜单中菜单项的字符串 JMenuItem popMenuItem[]=new JMenuItem[popMenuItemStr.length];//定义快捷菜单中的菜单项 for(int i=0;i<popMenuItemStr.length;i++) { popMenuItem[i]=new JMenuItem(popMenuItemStr[i]); popMenu.add(popMenuItem[i]); popMenuItem[i].addActionListener(this); } popMenuItem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));//设置一个快捷键 text_user.add(popMenu); JPanel panel=new JPanel(new GridLayout(6,1));//增加一个6行1列的面板 this.getContentPane().add(panel);//把面板添加到窗格的右半部分 //添加窗格右半部分的组件 text_number=new JTextField("1"); text_number.setEditable(false); panel.add(text_number); text_name=new JTextField("呆呆"); panel.add(text_name); JPanel panel_rb=new JPanel(new GridLayout(1,2));//新建一个面板,用来存放单选按钮 panel.add(panel_rb); ButtonGroup btnGrp=new ButtonGroup();//创建一个按钮组,配合单选按钮使用 radio_male=new JRadioButton("男");//默认选中 btnGrp.add(radio_male); panel_rb.add(radio_male);//先将单选按钮添加到按钮组中,再添加到按钮面板中 radio_female=new JRadioButton("女",true); btnGrp.add(radio_female); panel_rb.add(radio_female); this.cities=cities; combox_province=new JComboBox(provinces); combox_province.setEditable(true); combox_province.addActionListener(this); panel.add(combox_province); combox_city=new JComboBox(cities[0]); panel.add(combox_city); btn_add=new JButton("添加"); btn_add.addActionListener(this); panel.add(btn_add); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==combox_province) { int i=combox_province.getSelectedIndex();//取得所选中项的序列号 combox_city.removeAllItems();//移除city复合框中的选项 for(int j=0;j<this.cities[i].length;j++) { combox_city.addItem(this.cities[i][j]); } } if(e.getSource()==btn_add) { if(text_name.getText().isEmpty()) JOptionPane.showMessageDialog(this,"请输入姓名"); else { String aLine=number+" "+text_name.getText()+" "; if(radio_male.isSelected()) aLine+=radio_male.getText()+" "; if(radio_female.isSelected()) aLine+=radio_female.getText()+" "; aLine+=combox_province.getSelectedItem()+" ";//获得组合框选中项的字符串 aLine+=combox_city.getSelectedItem(); //在窗格的左半部分的文本区中,显示输入的信息 text_user.append(aLine+"/n"); this.number++; text_number.setText(""+this.number); text_name.setText(""); } } if(e.getSource() instanceof JMenuItem) { if(e.getActionCommand()=="剪切") text_user.cut();//送至系统剪贴板 if(e.getActionCommand()=="复制") text_user.copy(); if(e.getActionCommand()=="粘贴") text_user.paste(); } } public static void main(String args[]) { Object provinces[]={"吉林省","湖南省","河北省"}; Object cities[][]={{"长春","吉林"},{"长沙","岳阳"},{"石家庄","邯郸"}}; new UserJFrame(provinces,cities); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getModifiers()==MouseEvent.BUTTON3_MASK)//如果单击的是鼠标的右键 popMenu.show(text_user,e.getX(),e.getY());//在鼠标右击的地方弹出快捷菜单 } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } } 唬唬……再接再励啊!