UserJFrame

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class UserJFrame extends JFrame implements ActionListener {
	private int number=1;
	private JTextField textNumber,textName;
	private JRadioButton radiobMale,radiobFemale;
	private JTextArea textUser;
	private JButton btnAdd;
	private JComboBox comboxProvince,comboxCity;
	private Object cities[][];
	private Object provinces[];
	private boolean isAddProvince = false;
	
	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));
		textUser = new JTextArea();
		this.getContentPane().add(textUser);
		
		JPanel p = new JPanel(new GridLayout(6, 1));
		textNumber = new JTextField(1);
		textNumber.setEditable(false);
		textNumber.setText(""+this.number);
		p.add(textNumber);
		
		textName = new JTextField("姓名");
		p.add(textName);
		
		radiobMale = new JRadioButton("男", true);
		radiobFemale = new JRadioButton("女");
		//把两个单选按钮组成组(形成互斥)
		ButtonGroup bgroup = new ButtonGroup();
		bgroup.add(radiobMale);
		bgroup.add(radiobFemale);
		//把两个单选按钮加到界面(面板pp)当中
		JPanel pp = new JPanel(new GridLayout(1, 2));
		pp.add(radiobMale);
		pp.add(radiobFemale);
		p.add(pp);
		
		
		comboxProvince = new JComboBox(provinces);
		comboxProvince.setEditable(true);
		p.add(comboxProvince);
		comboxProvince.addActionListener(this);
		
		this.provinces = provinces;
		this.cities = cities;
		comboxCity = new JComboBox(cities[0]);
		p.add(comboxCity);
		
		
		btnAdd = new JButton("添加");
		p.add(btnAdd);
		btnAdd.addActionListener(this);
		
		this.getContentPane().add(p);
		plusMenu();
		
		this.setVisible(true);
	}
	
	private void plusMenu(){
		JMenuBar menuBar = new JMenuBar();
		JMenu menu = new JMenu("操作");
		JMenuItem menuItem_information = new JMenuItem("添加信息");
		JMenuItem menuItem_province = new JMenuItem("添加省份...");
		//给menuItem_information添加监听
		menuItem_information.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				addInfo();
			}
		});
		//给menuItem_province添加监听
		menuItem_province.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				final JDialog dialog = new JDialog(UserJFrame.this, true);
				dialog.setBounds(UserJFrame.this.getX()+20, UserJFrame.this.getY()+20, 280, 140);
				dialog.setLayout(new FlowLayout());
				dialog.setResizable(false);
				//布置dialog成员
				final JTextField textfield_province = new JTextField("省份名称",20);
				final JTextField textfield_city = new JTextField("城市之间用逗号隔开",20);
				JButton btn_plus = new JButton("添加");
				//给“添加”按钮添加监听
				btn_plus.addActionListener(new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						addProvince();
						dialog.dispose();
					}
					private void addProvince() {
						//添加省份
						Object[] tempProvince = new Object[provinces.length+1];
						System.arraycopy(provinces, 0, tempProvince, 0, provinces.length);
						tempProvince[provinces.length] = textfield_province.getText();
						provinces = tempProvince;
						//添加城市
						Object[][] tempCity = new Object[cities.length+1][];
						for (int i = 0; i < cities.length; i++) {
							tempCity[i] = new Object[cities[i].length];
							System.arraycopy(cities[i], 0, tempCity[i], 0, cities[i].length);
						}
						tempCity[cities.length] = textfield_city.getText().split(",|,");
						cities = tempCity;
						//将信息放入复选框中
						isAddProvince = true;
						comboxProvince.removeAllItems();
						for (int j = 0; j < provinces.length; j++) {
							comboxProvince.addItem(provinces[j]);
						}
						isAddProvince = false;
					}
				});
				//添加组件
				dialog.add(new JLabel("省份"));
				dialog.add(textfield_province);
				dialog.add(new JLabel("城市"));
				dialog.add(textfield_city);
				dialog.add(btn_plus);
				
				dialog.setVisible(true);
			}
		});
		
		setJMenuBar(menuBar);
		menuBar.add(menu);
		menu.add(menuItem_information);
		menu.add(menuItem_province);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==comboxProvince && !isAddProvince){
			int i = comboxProvince.getSelectedIndex();
			comboxCity.removeAllItems();
			for(int j=0;j<cities[i].length;j++){
				comboxCity.addItem(this.cities[i][j]);
			}
		}
		if(e.getSource()==btnAdd){
			addInfo();
		}
	}

	private void addInfo() {
		String aline=number+","+textName.getText();
		if(radiobMale.isSelected()){
			aline +=","+radiobMale.getText();
		}
		if(radiobFemale.isSelected()){
			aline +=","+radiobFemale.getText();
		}
		aline += "," + comboxProvince.getSelectedItem();
		aline += "," + comboxCity.getSelectedItem();
		
		textUser.append( aline+"\n" );
		this.number++;
		textNumber.setText(""+this.number);
		textName.setText("姓名");
	}
		
	public static void main(String[] args) {
		Object provinces[]={"江苏省","浙江省"};
		Object cities[][] = {	{"南京市","苏州市","无锡市"},
				                {"杭州市","宁波市","金华市","湖州"}
		                    };
		new UserJFrame(provinces,cities);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值