62,628
社区成员
发帖
与我相关
我的任务
分享package chap6;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.DefaultTableModel;
class Person implements Serializable{
private static final long serialVersionUID=1L;
private String name;
private String phoneNumber;
public String getNmae(){
return name;
}
public String getPhoneNumber(){
return phoneNumber;
}
public Person(String name,String phoneNumber){
this.name=name;
this.phoneNumber=phoneNumber;
}
}
class PersonCollection{
private Collection<Person>collection=null;
public PersonCollection(){
load();
}
public void add(Person person){
collection.add(person);
}
public Person find(String name){
Iterator<Person>iter=collection.iterator();
while(iter.hasNext()){
Person p=iter.next();
if(name.equals(p.getNmae()))
return p;
}
return null;
}
public boolean del(String name){
Iterator<Person>iter=collection.iterator();
while(iter.hasNext()){
Person p=iter.next();
if(name.equals(p.getNmae())){
collection.remove(p);
return true;
}
}
return false;
}
public Collection<Person>personCollection(){
return collection;
}
public void load(){
File myFile=new File("data.dat");
if(myFile.exists()){//exists是判断文件是否存在
try{
ObjectInputStream si=new ObjectInputStream(new FileInputStream(myFile));
this.collection=(Collection<Person>)si.readObject();
si.close();
}catch(Exception e){
e.printStackTrace();
}
}else{
collection=new HashSet<Person>();
}
}
public void save(){
try{
ObjectOutputStream so=new ObjectOutputStream(new FileOutputStream("data.dat"));
so.writeObject(this.collection);
so.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
public class Contact3 extends JFrame implements ActionListener{
private Vector<Vector<String>> rowData;
private Vector<String> columnName;
JTextField jtext1;
JTextField jtext2;
JButton jb1;
JButton jb2;
JTabbedPane p;
JTable table;
// List list;
static String str="";
static DefaultTableModel dtm ;
JScrollPane scrollPanel;
JPanel panel1;
static String [][] alist=new String[1][2];
static Vector<String> v = new Vector<String>();
static PersonCollection persons=new PersonCollection();
static Scanner reader=new Scanner(System.in);
// ArrayList<String> list=new ArrayList<String>();
String [][]data=new String[0][1];
public final String[] COLUMN_NAMES=new String[]{"姓名","电话号码"};
public Contact3(){
jb1=new JButton("添加");
jb2=new JButton("退出");
jb1.addActionListener(this);
jb2.addActionListener(this);
JLabel jl1=new JLabel("姓名");
JLabel jl2=new JLabel("手机号码");
dtm=new DefaultTableModel(data,COLUMN_NAMES);
jtext1=new JTextField("");
jtext2=new JTextField("");
table=new JTable(dtm);
scrollPanel = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
p=new JTabbedPane(JTabbedPane.TOP);
p.setBackground(Color.white);
panel1 = new JPanel();
JPanel a=new JPanel() ;
JPanel b=new JPanel();
JPanel c=new JPanel();
JPanel panel2 = new JPanel();
JPanel d=new JPanel();
JPanel panel3 = new JPanel();
p.add(panel1,"添加" );
p.add(panel2,"浏览" );
p.add(panel3,"查询" );
GridLayout myGridLayout=new GridLayout();
Container w1Container = this.getContentPane();
panel1.setLayout(new GridLayout(4,3));
a.setLayout(new GridLayout(1,2));
b.setLayout(new GridLayout(1,2));
c.setLayout(new FlowLayout());
a.add(jl1);
a.add(jtext1);
b.add(jl2);
b.add(jtext2);
c.add(jb1);
c.add(jb2);
panel1.add(a);
panel1.add(b);
panel1.add(c);
panel2.add(scrollPanel);
w1Container.add(p);
this.setSize(500,500);
this.setTitle("通讯录");
this.setVisible(true);
}
public static void add(String name,String phonenumber){
alist[0][0]=name.toString();
alist[0][1]=phonenumber.toString();
v.addElement(alist[0][0]);
v.addElement(alist[0][1]);
dtm.addRow(v);
dtm.getColumnCount();
persons.add(new Person(name,phonenumber));
}
public void actionPerformed(ActionEvent e) {
JButton button=(JButton)e.getSource();
if(button==jb1){
if(jtext1.getText().trim().equals("") && jtext2.getText().trim().equals("")){
JTextField jtext3=new JTextField("姓名电话为空!!");
jtext3.setBounds(150,270,100,30);
jtext3.setEditable(false);
panel1.add(jtext3);
}
else{
String name=jtext1.getText();
String phonenumber=jtext2.getText();
add(name,phonenumber);
}
}
else{
System.exit(0);
}
jtext1.setText("");
jtext2.setText("");
alist[0][0]=null;
alist[0][1]=null;
}
public static void main(String[] args) {
Contact3 c=new Contact3();
}
}
alist[0][0]=name.toString();
alist[0][1]=phonenumber.toString();
v.addElement(alist[0][0]);
v.addElement(alist[0][1]);
dtm.addRow(v);
你这里,v中的值已经有了很多了,但是加入到行的时候,只会取前面两个.也就是第一次的两个值,可以将v定义来本地的对象
alist[0][0]=name.toString();
alist[0][1]=phonenumber.toString();
Vector<String> v=new Vector<String>();
v.addElement(alist[0][0]);
v.addElement(alist[0][1]);
dtm.addRow(v);
dtm.getColumnCount();
persons.add(new Person(name,phonenumber));
而且你这里的alist[0][0]=name.toString();
alist[0][1]=phonenumber.toString();
改的永远是同一个对像,就是说alist中只有一个数据,最新的那个