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);
}
}
UserJFrame
最新推荐文章于 2023-05-08 17:09:50 发布