用代码说明一下我的思路吧 class A extends xxx_dialog { //private HashTable ht; //可以声明为属性,或者声明为局部变量 ... public void xxx_callotherdlg() { //A的某个方法,调用另一对话框 HashTable ht = new HashTable(); //哈希表变量,也可以声明为A的某个属性,在此用局部变量 B b_dlg = new B(ht); //把哈希表传给B ... //根据返回的哈希表ht刷新table
private B b;
private JButton button;
private ArrayList list;
private class B extends JDialog
{
//添加成员和组件(JTextField,JButton等)
//添加 get()和 set()函数以提供一个得到数据的接口
...
}
public A()
{
button.addActionListener(new ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
b=new B();
b.show();
}
});
b.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
//利用b中函数将b中数据传到a 中的arraylist
}
});
//添加其他成员和组件
...
}
}
A对话框的某个方法new一个B 对话框,同时往给B传递参数(例如传入一个哈希表),B对话框关闭前给传入的参数赋值,然后返回给A,A根据返回的参数对table进行刷新就可以了
然后传对象A进去,使用set/get方法来进行。
但如果填写的信息比较多,可以把信息封装成单独一个类,一个singleton类,那么在A和B对话框中均可引用这个类,读取此singleton类的信息。
class A extends xxx_dialog {
//private HashTable ht; //可以声明为属性,或者声明为局部变量
...
public void xxx_callotherdlg() { //A的某个方法,调用另一对话框
HashTable ht = new HashTable(); //哈希表变量,也可以声明为A的某个属性,在此用局部变量
B b_dlg = new B(ht); //把哈希表传给B
...
//根据返回的哈希表ht刷新table
}
}class B extends yyy_dialog {
private HashTable ht;
...
public B(HashTable ht) { //构造器,传入参数
this.ht = ht;
} //之后可以随意操作ht
}这样的话A,B都相对比较独立,利于扩展