import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; /*TestCfgGUI类*/ 
public class TestCfgGUI extends JDialog{
TestGUI testGUI; private JTextField aTextField = new JTextField(); 
TestCfgGUI(TestGUI testGUI){ 
this.testGUI = testGUI; 
setSize(200, 100); 
this.add(aTextField); 
setVisible(true); 


/*Test类*/ 
public class Test { 
TestGUI testGUI; 
Test(){ 
testGUI = new TestGUI(this); 
} public static void main(String [] args){ 
new Test(); 


import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; /*TestGUI类*/ 
public class TestGUI extends JFrame{ 
Test test; 
private JButton testButton = new JButton("Test"); 
TestGUI(Test test){ 
this.test = test; 
this.setSize(200, 100); 
this.add(testButton); 
testButton.addActionListener(new ButtonEvent()); 
this.addWindowListener(new WindowAdapter(){ 
public void windowClosing(WindowEvent we){ 
System.exit(0); 

}); 
this.setVisible(true); 
} class ButtonEvent implements ActionListener{ 
public void actionPerformed(ActionEvent e){ 
new TestCfgGUI(test.testGUI); 



/*StrParam类*/ 
public class StrParam { 
private String str = "Test"; public String getStr(){
return this.str;
}
} 现在在写一个比较大型的程序,遇到了一个类似上面的一个问题:
1.把StrParam类中的str参数传递给TestCfgGUI类中TextField,不要改变此4个文件的大体结构,可以添加声明、方法;
2.StrParam类,TestGUI类,TestCfgGUI类中只能写方法;其方法的实现最好在Test类中
3.一些不直接实例化StrParam类,然后直接传递给TextField的就不要说了

解决方案 »

  1.   

    TestCfgGUI(TestGUI testGUI){ 
    this.testGUI = testGUI; 
    setSize(200, 100); 
    this.add(aTextField); 
    setVisible(true); 

    }  给TestCfgGUI增加一个set方法,把StrParam传过去,
    这个构造函数就不要了,改成init方法.不然的话 你就只有改constructor的参数.
      

  2.   

    public class TestCfgGUI extends JDialog{
    TestGUI testGUI; 
    private StrParam param ;
    private JTextField aTextField = new JTextField(); 
    TestCfgGUI(TestGUI testGUI,StrParam param){ 
    this.param=param;aTextField.setText(param.getStr());this.testGUI = testGUI; 
    setSize(200, 100); 
    this.add(aTextField); 
    setVisible(true); 

    }  差不多就这样子了,楼主努力阿.
      

  3.   

    莫办法啊~~参数之间搞的晕头转向的~~
    对了,参数传递我也曾想过,可是你能明确的说一下,各个类里还需要加什么声明,
    还有StrParam没有实例话啊,在那个位置上实例化StrParam~~~~~能在详细一点吗???
    比如说new TestCfgGUI(test.testGUI)应该改成什么??
      

  4.   

    根据你的例子实例化StrParam要在调用哪个构造函数之前.比如class ButtonEvent implements ActionListener{ 
    public void actionPerformed(ActionEvent e){ 
    //实例化StrParam
    StrParam param = new StrParam();
    //传递过去
    new TestCfgGUI(test.testGUI,param); 


    }  
    楼主的实践太少,慢慢练习吧.
      

  5.   

    其实用构造函数来传递参数,不灵活一般都用set方法传递参数,更灵活.当然,也可以两者结合.用set方法传过去的参数在构造函数中是用不成的,所以,如果要初始化,就得增加init方法,单独调用init方法.
      

  6.   

    解~~~~~~~~~~~~~~~~~决~~~~~~~~~~~~~方~~~~~~~~~~~~~~~~~案:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;/*TestGUI类*/
    public class TestGUI extends JFrame{
    Test test;

    private JButton testButton = new JButton("Test");
    TestGUI(Test test){
    this.test = test;
    this.setSize(200, 100);
    this.add(testButton);
    testButton.addActionListener(new ButtonEvent());
    this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent we){
    System.exit(0);
    }
    });
    this.setVisible(true);
    }

    class ButtonEvent implements ActionListener{
    public void actionPerformed(ActionEvent e){
    new TestCfgGUI(test.testGUI,test.sp); //更改
    }
    }
    }import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;/*TestCfgGUI类*/
    public class TestCfgGUI extends JDialog{
    TestGUI testGUI;
    /*添加*/
    StrParam strParam;
    /*****/

    private JTextField aTextField = new JTextField();

    TestCfgGUI(TestGUI testGUI,StrParam strParam){  //更改
    this.testGUI = testGUI;
    /*添加*/
    this.strParam = strParam;
    /*****/
    setSize(200, 100);
    this.add(aTextField);
    aTextField.setText(strParam.getStr());
    setVisible(true);
    }
    }
    /*Test类*/
    public class Test {
    TestGUI testGUI;
    /*添加*/
    StrParam sp;
    /***/
    Test(){
    sp = new StrParam(); 
    /*添加*/
    testGUI = new TestGUI(this);
    /****/
    }

    public static void main(String [] args){
    new Test();
    }
    }/*StrParam类*/
    public class StrParam {
    private String str = "Test";

    public String getStr() { 
    return str; 

    }
      

  7.   

    我也知道get、set方法,但是在我写的程序中必须要用构造函数的参数传递,这两天就是因为几个界面类,还有读取文件类的连接,一直停止不前,这不才写了一个简化的代码来求助了,先前也求助了一次,都没有人提到构造函数的参数的传递,哎~~~~~~