import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;class studentDataTableFrame extends JFrame
{
private static final int WIDTH = 300;
    private static final int HEIGHT = 200;  JButton okButton;
JButton cancelButton;
Box selectBox;
Vector studentData;
JTable sutdentDataTable;
String [] head;
JScrollPane sutdentDataScrollPane1;
Object[][] content; studentDataTableFrame()
{
builderTable();
builderButton(); setLayout(new BorderLayout());
setTitle("学生信息");
setSize(WIDTH, HEIGHT);
setLocation(WIDTH,HEIGHT);
add(sutdentDataScrollPane1,BorderLayout.CENTER);
add(selectBox,BorderLayout.SOUTH);        setVisible(true);//显示

addWindowListener (new WindowAdapter ()
{
public void windowClosing(WindowEvent e) 
{
System.exit(0);
}
}) ;//关闭
} void builderTable()
{
studentData = new Vector () ;
head = new String[]{"姓名","学号","性别","籍贯","简单介绍"};
//Object[][] content = {{""},{""}};
sutdentDataTable = new JTable();
sutdentDataScrollPane1 = new JScrollPane (sutdentDataTable);
} void builderButton()
{
okButton = new JButton("增加");
        cancelButton = new JButton("关闭");
        selectBox = Box.createHorizontalBox();
        selectBox.add(Box.createHorizontalStrut(40));

        selectBox.add(okButton);
        selectBox.add(Box.createHorizontalGlue());
        selectBox.add(cancelButton);
        selectBox.add(Box.createHorizontalStrut(40)); okButton.addActionListener (new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
new studentMessageInputDialog(studentDataTableFrame.this);
}
}) ; cancelButton.addActionListener (new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
System.exit(0);
}

}) ;
} void addData(String s)//(Vector Data)
{
System.out.println(s);
/*studentData.add (Data) ;
StudentDataModel dm = new StudentDataModel (head , studentData) ;
sutdentDataTable.setModel (dm) ;*/
} public static void main(String[] args)
{
new studentDataTableFrame();
}
}
--------------------------------------------------------------------------import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;class studentMessageInputDialog extends JDialog
{
private static final int WIDTH = 300;
    private static final int HEIGHT = 200;   JLabel nameLabel;
JLabel numberLabel;
JLabel sexLabel;
JLabel addressLabel;
JLabel commentLabel;
JTextField nameTextField;
JTextField numberTextField;
JComboBox sexComboBox;
JComboBox addressCombo;
JTextArea commentTextArea;
JScrollPane commentScrollPane;
    JPanel inputPanel;
JButton okButton;
JButton cancelButton;
Box selectBox;
studentDataTableFrame frm;    studentMessageInputDialog(studentDataTableFrame frm)
    {
super (frm); builderInputPanel();
builderButton(); //必要的设置
setLayout(new BorderLayout());
        setTitle("学生信息输入界面");
        setSize(WIDTH, HEIGHT);
setLocation(WIDTH,HEIGHT);
add(inputPanel,BorderLayout.CENTER);
add(selectBox,BorderLayout.SOUTH);        setVisible(true);//显示 addWindowListener (new WindowAdapter ()
{
public void windowClosing(WindowEvent e) 
{
dispose();
}
}) ;
    }
void builderInputPanel()
{
inputPanel = new JPanel(); //网格组布局
        GridBagLayout layout = new GridBagLayout();
        inputPanel.setLayout(layout);
        
        nameLabel = new JLabel("姓名: ");
        nameTextField = new JTextField(10);        numberLabel = new JLabel("学号: ");
        numberTextField = new JTextField(10);
        
sexLabel = new JLabel("性别: ");
sexComboBox = new JComboBox(new String[]{"男", "女"});
  
addressLabel = new JLabel("籍贯: ");
addressCombo = new JComboBox(new String[]
{"南宁", "柳州", "桂林", "北海", "防城港"});
 
commentLabel = new JLabel("简 单 介 绍");
commentTextArea = new JTextArea();
commentTextArea.setLineWrap(true);     

commentScrollPane=new JScrollPane(commentTextArea); // 添加到框架
GridBagConstraints constraints = new GridBagConstraints constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.CENTER;
constraints.weightx = 0;
constraints.weighty = 1; input(nameLabel, constraints, 0, 0, 1, 1);
input(numberLabel, constraints, 0, 1, 1, 1);
input(sexLabel, constraints, 0, 2, 1, 1);
input(addressLabel, constraints, 0, 3, 1, 1);
input(commentLabel, constraints, 2, 0, 1, 1); constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weightx = 1;

input(nameTextField, constraints, 1, 0, 1, 1);
input(numberTextField, constraints, 1, 1, 1, 1);
input(sexComboBox, constraints, 1, 2, 1, 1);
input(addressCombo, constraints, 1, 3, 1, 1);

constraints.fill = GridBagConstraints.BOTH;
input(commentScrollPane, constraints, 2, 1, 1, 3);
}

void builderButton()
{
okButton = new JButton("增加");
cancelButton = new JButton("关闭"); selectBox = Box.createHorizontalBox(); selectBox.add(Box.createHorizontalStrut(40));

selectBox.add(okButton);
selectBox.add(Box.createHorizontalGlue()); selectBox.add(cancelButton);
selectBox.add(Box.createHorizontalStrut(40));
  
okButton.addActionListener (new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
/*Vector v = new Vector () ;
v.add (nameTextField.getText ()) ;
v.add ((String)sexComboBox.getSelectedItem()) ;
v.add ((String)addressCombo.getSelectedItem()) ;
v.add (commentTextArea.getText());*/
studentMessageInputDialog.this.frm.addData ("无法实现...
") ;//无法实现...
}
}) ; cancelButton.addActionListener (new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
dispose();
}
}) ;
} void input(Component c, GridBagConstraints constraints,
        int x, int y, int w, int h)
    {  
        constraints.gridx = x;
        constraints.gridy = y;
        constraints.gridwidth = w;
        constraints.gridheight = h;
        inputPanel.add(c, constraints);
    }
}
----------------------------------------------得到了父窗体的对象的引用,为什么不能调用里面的方法..................
求解.........................

解决方案 »

  1.   

    package common;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.Vector;class studentMessageInputDialog extends JDialog
    {
    private static final int WIDTH = 300;
        private static final int HEIGHT = 200;   JLabel nameLabel;
    JLabel numberLabel;
    JLabel sexLabel;
    JLabel addressLabel;
    JLabel commentLabel;
    JTextField nameTextField;
    JTextField numberTextField;
    JComboBox sexComboBox;
    JComboBox addressCombo;
    JTextArea commentTextArea;
    JScrollPane commentScrollPane;
        JPanel inputPanel;
    JButton okButton;
    JButton cancelButton;
    Box selectBox;
    studentDataTableFrame frm;    studentMessageInputDialog(studentDataTableFrame frm1)
        {
    super (frm1);
    frm = new  studentDataTableFrame();
    builderInputPanel();
    builderButton(); //必要的设置
    this.getContentPane().setLayout(new BorderLayout());
            setTitle("学生信息输入界面");
            setSize(WIDTH, HEIGHT);
    setLocation(WIDTH,HEIGHT);
    this.getContentPane().add(inputPanel,BorderLayout.CENTER);
    this.getContentPane().add(selectBox,BorderLayout.SOUTH);        setVisible(true);//显示 addWindowListener (new WindowAdapter ()
    {
    public void windowClosing(WindowEvent e) 
    {
    dispose();
    }
    }) ;
        }
    void builderInputPanel()
    {
    inputPanel = new JPanel(); //网格组布局
            GridBagLayout layout = new GridBagLayout();
            inputPanel.setLayout(layout);
            
            nameLabel = new JLabel("姓名: ");
            nameTextField = new JTextField(10);        numberLabel = new JLabel("学号: ");
            numberTextField = new JTextField(10);
            
    sexLabel = new JLabel("性别: ");
    sexComboBox = new JComboBox(new String[]{"男", "女"});
      
    addressLabel = new JLabel("籍贯: ");
    addressCombo = new JComboBox(new String[]
    {"南宁", "柳州", "桂林", "北海", "防城港"});
     
    commentLabel = new JLabel("简 单 介 绍");
    commentTextArea = new JTextArea();
    commentTextArea.setLineWrap(true);     

    commentScrollPane=new JScrollPane(commentTextArea); // 添加到框架
    GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.NONE;
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.weightx = 0;
    constraints.weighty = 1; input(nameLabel, constraints, 0, 0, 1, 1);
    input(numberLabel, constraints, 0, 1, 1, 1);
    input(sexLabel, constraints, 0, 2, 1, 1);
    input(addressLabel, constraints, 0, 3, 1, 1);
    input(commentLabel, constraints, 2, 0, 1, 1); constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.weightx = 1;

    input(nameTextField, constraints, 1, 0, 1, 1);
    input(numberTextField, constraints, 1, 1, 1, 1);
    input(sexComboBox, constraints, 1, 2, 1, 1);
    input(addressCombo, constraints, 1, 3, 1, 1);

    constraints.fill = GridBagConstraints.BOTH;
    input(commentScrollPane, constraints, 2, 1, 1, 3);
    }

    void builderButton()
    {
    okButton = new JButton("增加");
    cancelButton = new JButton("关闭"); selectBox = Box.createHorizontalBox(); selectBox.add(Box.createHorizontalStrut(40));

    selectBox.add(okButton);
    selectBox.add(Box.createHorizontalGlue()); selectBox.add(cancelButton);
    selectBox.add(Box.createHorizontalStrut(40));
      
    okButton.addActionListener (new ActionListener ()
    {
    public void actionPerformed (ActionEvent e)
    {
    /*Vector v = new Vector () ;
    v.add (nameTextField.getText ()) ;
    v.add ((String)sexComboBox.getSelectedItem()) ;
    v.add ((String)addressCombo.getSelectedItem()) ;
    v.add (commentTextArea.getText());*/
    frm.addData ("无法实现...") ;//无法实现...
    }
    }) ; cancelButton.addActionListener (new ActionListener ()
    {
    public void actionPerformed (ActionEvent e)
    {
    dispose();
    }
    }) ;
    } void input(Component c, GridBagConstraints constraints,
            int x, int y, int w, int h)
        {  
            constraints.gridx = x;
            constraints.gridy = y;
            constraints.gridwidth = w;
            constraints.gridheight = h;
            inputPanel.add(c, constraints);
        }
    }
    package common;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;class studentDataTableFrame extends JFrame
    {
    private static final int WIDTH = 300;
        private static final int HEIGHT = 200;  JButton okButton;
    JButton cancelButton;
    Box selectBox;
    Vector studentData;
    JTable sutdentDataTable;
    String [] head;
    JScrollPane sutdentDataScrollPane1;
    Object[][] content; studentDataTableFrame()
    {
    builderTable();
    builderButton();
    this.getContentPane().setLayout(new BorderLayout());
    //setLayout(new BorderLayout());
    setTitle("学生信息");
    setSize(WIDTH, HEIGHT);
    setLocation(WIDTH,HEIGHT);
    this.getContentPane().add(sutdentDataScrollPane1,BorderLayout.CENTER);
    this.getContentPane().add(selectBox,BorderLayout.SOUTH);        setVisible(true);//显示

    addWindowListener (new WindowAdapter ()
    {
    public void windowClosing(WindowEvent e) 
    {
    System.exit(0);
    }
    }) ;//关闭
    } void builderTable()
    {
    studentData = new Vector () ;
    head = new String[]{"姓名","学号","性别","籍贯","简单介绍"};
    //Object[][] content = {{""},{""}};
    sutdentDataTable = new JTable();
    sutdentDataScrollPane1 = new JScrollPane (sutdentDataTable);
    } void builderButton()
    {
    okButton = new JButton("增加");
            cancelButton = new JButton("关闭");
            selectBox = Box.createHorizontalBox();
            selectBox.add(Box.createHorizontalStrut(40));

            selectBox.add(okButton);
            selectBox.add(Box.createHorizontalGlue());
            selectBox.add(cancelButton);
            selectBox.add(Box.createHorizontalStrut(40)); okButton.addActionListener (new ActionListener ()
    {
    public void actionPerformed (ActionEvent e)
    {
    new studentMessageInputDialog(studentDataTableFrame.this);
    }
    }) ; cancelButton.addActionListener (new ActionListener ()
    {
    public void actionPerformed (ActionEvent e)
    {
    System.exit(0);
    }

    }) ;
    } void addData(String s)//(Vector Data)
    {
    System.out.println(s);
    /*studentData.add (Data) ;
    StudentDataModel dm = new StudentDataModel (head , studentData) ;
    sutdentDataTable.setModel (dm) ;*/
    } public static void main(String[] args)
    {
    new studentDataTableFrame();
    }
    }
      

  2.   

    studentMessageInputDialog(studentDataTableFrame frm1)
        {
    super (frm1);
    frm = new  studentDataTableFrame();
    frm.addData ("无法实现...") ;//无法实现...
    studentMessageInputDialog.this.frm.addData ("无法实现...
    ") 
    楼上的前辈,能解释一下吗?
    为什么我的会出空指针异常呢?studentMessageInputDialog.this.frm.addData();
    不是也是引用吗?
      

  3.   

    另外就是,你new 一个-------frm = new  studentDataTableFrame();的时候,就多产生一个窗体了
      

  4.   

    studentMessageInputDialog(studentDataTableFrame frm)
        {
    super (frm);this.frm = frm; //需要在此对frm赋值builderInputPanel();
    builderButton();//必要的设置
    setLayout(new BorderLayout());
            setTitle("学生信息输入界面");
            setSize(WIDTH, HEIGHT);
    setLocation(WIDTH,HEIGHT);
    add(inputPanel,BorderLayout.CENTER);
    add(selectBox,BorderLayout.SOUTH);        setVisible(true);//显示addWindowListener (new WindowAdapter ()
    {
    public void windowClosing(WindowEvent e) 
    {
    dispose();
    }
    }) ;
        }
      

  5.   

    JFrame不可以直接 add的 要  this.getContentPane().add还有你的frm 没有实例化他 所以不能调用 adddate的方法你用eclipse 编译你的 程序他回给你好多出错提示的 
    我就是根据他的提示修改 的你的程序的啦  呵呵
      

  6.   

    没有实力化。尝试new一个新的对象看看
      

  7.   

    JFrame不可以直接 add的 要  this.getContentPane().add但是我都是这样写的,都没出错啊...................