java中不同窗体的控件访问
我有两个类 在同一个包中 主窗体Test2 子窗体StuAddDialog Test2中有个JTable控件 jt1 我想在SutAddDialog中访问jt1 请问如何做 谢谢
public class Test2 extends JFrame implements ActionListener {
/**
* @param args
*/
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4,jb5;
JTable jt1;
JScrollPane jsp;
JTextField jtf;
public static void main(String[] args) {
// TODO Auto-generated method stub
Test2 t2=new Test2();
}
public Test2()
{
//第一部分
jp1=new JPanel();
jl1=new JLabel("请输入名字");
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
//第三部分
jp2=new JPanel();
jb2=new JButton("添加 ");
jb2.addActionListener(this);
jb3=new JButton("删除 ");
jb4=new JButton("修改 ");
jb5=new JButton("刷新");
jb5.addActionListener(this);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
//中间部分
//创建一个数据模型对象
StuModel sm=new StuModel();
jt1=new JTable(sm);*************************
jsp=new JScrollPane(jt1);
this.add(jsp);
this.add(jp1,"North");
this.add(jp2,"South");
this.setSize(400, 300);
this.setLocation(360, 270);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JTable GetJTable()
{
return this.jt1;
}
******************************************************************************
public class StuAddDialog extends JDialog implements ActionListener {
JLabel jl1,jl2,jl3,jl4,jl5;
JButton jb1,jb2;
JTextField jtf1,jtf2,jtf3,jtf4,jtf5;
JPanel jp1,jp2,jp3;
public StuAddDialog(Frame owner, String title, boolean modal)
{
jl1=new JLabel("学号");
jl2=new JLabel("姓名");
jl3=new JLabel("性别");
jl4=new JLabel("年龄");
jl5=new JLabel("籍贯");
jb1=new JButton("添加");
jb2=new JButton("取消");
jtf1=new JTextField(10);
jtf2=new JTextField(10);
jtf3=new JTextField(10);
jtf4=new JTextField(10);
jtf5=new JTextField(10);
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp1.setLayout(new GridLayout(5,1));
jp2.setLayout(new GridLayout(5,1));
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp2.add(jtf1);
jp2.add(jtf2);
jp2.add(jtf3);
jp2.add(jtf4);
jp2.add(jtf5);
jp3.add(jb1);
jp3.add(jb2);
this.add(jp1,BorderLayout.WEST);
this.add(jp2,BorderLayout.CENTER);
this.add(jp3,BorderLayout.SOUTH);
jb1.addActionListener(this);
jb2.addActionListener(this);
this.setSize(300,200);
this.setLocation(180, 140);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getSource()==jb1)
{
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
ct=DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb1","sa","sa");
ps=ct.prepareStatement("insert into student values(?,?,?,?,?)");
ps.setString(1, jtf1.getText());
ps.setString(2, jtf2.getText());
ps.setString(3, jtf3.getText());
ps.setString(4, jtf4.getText());
ps.setString(5, jtf5.getText());
int i=ps.executeUpdate();
if (i==1)
{
System.out.println("添加成功!");
//刷新数据************************就是这里的jt1访问不了
//StuModel sm=new StuModel("");
//jt1.setModel(sm);
} else
{
System.out.println("添加失败!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs!=null)
{
rs.close();
}
if (ps!=null)
{
ps.close();
}
if (ct!=null)
{
ct.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else if (arg0.getSource()==jb2)
{
this.dispose();
}
}
}