java 我的java学习之路 Person对象信息管理

本例演示面板,单选按钮,列表框,组合框等组件的各种不同布局方式的使用方法,对初学者是个很好的学习例子

package cn.hncu.PersonManage;


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.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class User extends JFrame{
private JTextField textName,textBirth,textDeparment,textMajor,textNumber;
private JRadioButton btnMan,btnFemale;
private JButton btnAdd,btnDelete,btnDeleteChoose;
private JTextArea text;
private JCheckBox checkMember;
private JComboBox comboxCity,comboxProvice,comboxFind,comboxSort;
private Object provinces[] = {"江苏省","浙江省","湖南省"};
private Object cities[][] = { {"南京市","苏州市","无锡市"},
{"杭州市","宁波市","温州市","衢州市"},
{"益阳市","长沙市","岳阳市","湘潭市"}
};
private Person persons[]=new Person[0];
public User(){
setTitle("Person对象信息管理");
setBounds(200, 200, 700, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(null);
JPanel left=new JPanel(new GridLayout(10,1));
left.add(new JLabel("Student"));
textName=new JTextField("姓名:");
left.add(textName);
textBirth=new JTextField("1990年1月1日");
left.add(textBirth);
JPanel pSex=new JPanel();
btnMan=new JRadioButton("男");
btnMan.setSelected(true);
btnFemale=new JRadioButton("女");
pSex.add(btnMan);
pSex.add(btnFemale);
ButtonGroup group=new ButtonGroup();
group.add(btnMan);
group.add(btnFemale);
left.add(pSex);


comboxProvice=new JComboBox(provinces);
left.add(comboxProvice);
comboxCity=new JComboBox(cities[0]);
left.add(comboxCity);


textDeparment=new JTextField("计算机系");
left.add(textDeparment);
textMajor=new JTextField("计算机科学与技术");
left.add(textMajor);
textNumber=new JTextField("031");
left.add(textNumber);
checkMember=new JCheckBox("团员");
left.add(checkMember);
left.setBounds(10, 10, 90, 250);
this.getContentPane().add(left);


JSplitPane split=new JSplitPane();
split.setBounds(110, 0, 8, 300);
this.getContentPane().add(split);


text=new JTextArea();
JScrollPane jp=new JScrollPane(text);
jp.setBounds(120, 10, 560, 200);
this.getContentPane().add(jp);


JPanel pAdd=new JPanel();
pAdd.setBounds(120, 220, 560, 300);
pAdd.setLayout(new FlowLayout(FlowLayout.LEFT));
btnAdd=new JButton("添加");
pAdd.add(btnAdd);
btnDelete=new JButton("删除");
pAdd.add(btnDelete);
btnDeleteChoose=new JButton("删除选中项");
pAdd.add(btnDeleteChoose);
pAdd.add(new JLabel("查找关键字"));
String str[]={"学号","姓名","省份","院系"};
comboxFind=new JComboBox(str);
pAdd.add(comboxFind);
pAdd.add(new JLabel("排序关键字"));
comboxSort=new JComboBox(str);
pAdd.add(comboxSort);
this.getContentPane().add(pAdd);
//监听
Listener listener=new Listener();
comboxProvice.addActionListener(listener);
btnAdd.addActionListener(listener);
btnDelete.addActionListener(listener);
btnDeleteChoose.addActionListener(listener);
comboxSort.addActionListener(listener);
comboxFind.addActionListener(listener);
setVisible(true);


}
class Listener implements ActionListener{


@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==comboxProvice){
int i=comboxProvice.getSelectedIndex();
comboxCity.removeAllItems();
for(int j=0;j<cities[i].length;j++){
comboxCity.addItem(cities[i][j]);
}
}else if(e.getSource()==btnAdd){
boolean isAdd=true;
for(int i=0;i<persons.length;i++){
if(persons[i].number.equals(textNumber.getText())){
isAdd=false;
}
}
if(isAdd){
Person[] temp=new Person[persons.length+1];
for(int i=0;i<persons.length;i++){
temp[i]=persons[i];
}
temp[temp.length-1]=new Person(textName.getText(),textBirth.getText(),(String)(btnMan.isSelected()?"男":"女"),
comboxProvice.getSelectedItem(),comboxCity.getSelectedItem(),textDeparment.getText(),
textMajor.getText(),textNumber.getText(),(String)(checkMember.isSelected()?"团员":""));
persons=temp;
temp=null;
}
refresh(persons);
}else if(e.getSource()==btnDelete){
persons=null;
persons=new Person[0];
refresh(persons);
}else if(e.getSource()==btnDeleteChoose){
String str = text.getSelectedText();
int j=-1;
for(int i=0;i<persons.length;i++){
if(persons[i].toString().equalsIgnoreCase(str)){
j=i;
break;
}
}
for (; j < persons.length-1; j++) {
persons[j]=persons[j+1];
}
Person[] temp=new Person[persons.length-1];
for(int i=0;i<temp.length;i++){
temp[i]=persons[i];
}
persons=temp;
temp=null;
refresh(persons);
}else if(e.getSource()==comboxSort){
String str=(String) comboxSort.getSelectedItem();
if(str.equalsIgnoreCase("学号")){
for(int i=0;i<persons.length-1;i++){
for (int j = i+1; j < persons.length; j++) {
if (persons[i].number .compareTo(persons[j].number)>0) {
Person p=persons[i];
persons[i]=persons[j];
persons[j]=p;
}
}
}
}else if(str.equalsIgnoreCase("姓名")){
System.out.println("sss");
for(int i=0;i<persons.length-1;i++){
for (int j = i+1; j < persons.length; j++) {
if (persons[i].name .compareTo(persons[j].name)>0) {
Person p=persons[i];
persons[i]=persons[j];
persons[j]=p;
}
}
}
}else if(str.equalsIgnoreCase("省份")){
for(int i=0;i<persons.length-1;i++){
for (int j = i+1; j < persons.length; j++) {
if (((String) (persons[i].provinces)).compareTo((String)(persons[j].provinces))>0) {
Person p=persons[i];
persons[i]=persons[j];
persons[j]=p;
}
}
}
}else if(str.equalsIgnoreCase("院系")){
for(int i=0;i<persons.length-1;i++){
for (int j = i+1; j < persons.length; j++) {
if (persons[i].department .compareTo(persons[j].department)>0) {
Person p=persons[i];
persons[i]=persons[j];
persons[j]=p;
}
}
}
}
refresh(persons);
}else if(e.getSource()==comboxFind){
String str=(String) comboxFind.getSelectedItem();
if(str.equalsIgnoreCase("学号"));
}
}


private void sort() {
for(int i=0;i<persons.length-1;i++){
for (int j = i+1; j < persons.length; j++) {
if (persons[i].member .compareToIgnoreCase(persons[j].number)<0) {
Person p=persons[i];
persons[i]=persons[j];
persons[j]=p;
}
}
}
}


private void refresh(Person[] persons) {
text.setText("");
for(int i=0;i<persons.length;i++){
text.append(persons[i].toString());
text.append("\n");
}
}
}


public class Person {
private String name;
private String birth;
private String isMan;
private Object provinces;
private Object cities;
private String department;
private String major;
private String number;
private String member;
public Person(){


}
public Person(String name, String birth, String isMan,
Object provinces, Object cities, String department,
String major, String number, String menber) {
super();
this.name = name;
this.birth = birth;
this.isMan = isMan;
this.provinces = provinces;
this.cities = cities;
this.department = department;
this.major = major;
this.number = number;
this.member = menber;
}
@Override
public String toString() {
return name + "," + birth + ","
+ isMan + "," + provinces + "," + cities
+ "," + department + "," + major
+ "," + number + "," + member ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getIsMan() {
return isMan;
}
public void setIsMan(String isMan) {
this.isMan = isMan;
}
public Object getProvinces() {
return provinces;
}
public void setProvinces(Object provinces) {
this.provinces = provinces;
}
public Object getCities() {
return cities;
}
public void setCities(Object cities) {
this.cities = cities;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getMember() {
return member;
}
public void setMember(String member) {
this.member = member;
}




}
public static void main(String[] args) {
new User();
}


}

以下是一个简单的Java程序,实现了使用表格管理Person对象信息的功能。程序使用了Java Swing库的JTable和JOptionPane类,可以在表格中显示、添加、修改和删除Person对象信息。 ```java import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class PersonManager { private JFrame frame; private JTable table; private DefaultTableModel model; private List<Person> personList = new ArrayList<>(); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { PersonManager window = new PersonManager(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public PersonManager() { initialize(); } private void initialize() { frame = new JFrame(); frame.setTitle("Person Manager"); frame.setBounds(100, 100, 600, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame.getContentPane().add(panel, BorderLayout.SOUTH); JButton addButton = new JButton("Add"); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addPerson(); } }); panel.add(addButton); JButton editButton = new JButton("Edit"); editButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { editPerson(); } }); panel.add(editButton); JButton deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { deletePerson(); } }); panel.add(deleteButton); model = new DefaultTableModel(new Object[][] {}, new String[] { "ID", "Name", "Age" }); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); } private void addPerson() { String id = JOptionPane.showInputDialog(frame, "Enter ID:"); if (id != null && !id.trim().isEmpty()) { String name = JOptionPane.showInputDialog(frame, "Enter Name:"); if (name != null && !name.trim().isEmpty()) { String age = JOptionPane.showInputDialog(frame, "Enter Age:"); if (age != null && !age.trim().isEmpty()) { Person person = new Person(id, name, Integer.parseInt(age)); personList.add(person); model.addRow(new Object[] { person.getId(), person.getName(), person.getAge() }); } } } } private void editPerson() { int selectedRow = table.getSelectedRow(); if (selectedRow >= 0) { String id = (String) model.getValueAt(selectedRow, 0); String name = (String) model.getValueAt(selectedRow, 1); String age = String.valueOf(model.getValueAt(selectedRow, 2)); String newId = JOptionPane.showInputDialog(frame, "Enter ID:", id); if (newId != null && !newId.trim().isEmpty()) { String newName = JOptionPane.showInputDialog(frame, "Enter Name:", name); if (newName != null && !newName.trim().isEmpty()) { String newAge = JOptionPane.showInputDialog(frame, "Enter Age:", age); if (newAge != null && !newAge.trim().isEmpty()) { Person newPerson = new Person(newId, newName, Integer.parseInt(newAge)); personList.set(selectedRow, newPerson); model.setValueAt(newPerson.getId(), selectedRow, 0); model.setValueAt(newPerson.getName(), selectedRow, 1); model.setValueAt(newPerson.getAge(), selectedRow, 2); } } } } } private void deletePerson() { int selectedRow = table.getSelectedRow(); if (selectedRow >= 0) { personList.remove(selectedRow); model.removeRow(selectedRow); } } private static class Person { private String id; private String name; private int age; public Person(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public String getName() { return name; } public int getAge() { return age; } } } ``` 程序定义了一个Person类,包含id、name和age三个属性。在程序中,使用一个List<Person>对象保存所有Person对象,使用一个DefaultTableModel对象管理表格数据,使用JOptionPane类实现对话框输入。程序提供了添加、修改和删除Person对象信息的功能,用户可以在表格中双击选择要修改的行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值