急求Java类之间参数传递的解决方法!!!!解决立马结贴

FFF9527 2008-04-03 11:02:22
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的就不要说了
...全文
390 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
FFF9527 2008-04-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhmt 的回复:]
其实用构造函数来传递参数,不灵活

一般都用set方法传递参数,更灵活.当然,也可以两者结合.

用set方法传过去的参数在构造函数中是用不成的,所以,如果要初始化,就得增加init方法,单独调用init方法.
[/Quote]
我也知道get、set方法,但是在我写的程序中必须要用构造函数的参数传递,这两天就是因为几个界面类,还有读取文件类的连接,一直停止不前,这不才写了一个简化的代码来求助了,先前也求助了一次,都没有人提到构造函数的参数的传递,哎~~~~~~
zhmt 2008-04-04
  • 打赏
  • 举报
回复
呵呵,楼主继续努力.
FFF9527 2008-04-04
  • 打赏
  • 举报
回复
解~~~~~~~~~~~~~~~~~决~~~~~~~~~~~~~方~~~~~~~~~~~~~~~~~案:
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;
}
}
FFF9527 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhmt 的回复:]
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);
}
}

差不多就这样子了,楼主努力阿.
[/Quote]
终于好了,谢谢,非常感谢~~~
zhmt 2008-04-03
  • 打赏
  • 举报
回复
其实用构造函数来传递参数,不灵活

一般都用set方法传递参数,更灵活.当然,也可以两者结合.

用set方法传过去的参数在构造函数中是用不成的,所以,如果要初始化,就得增加init方法,单独调用init方法.
zhmt 2008-04-03
  • 打赏
  • 举报
回复
根据你的例子

实例化StrParam要在调用哪个构造函数之前.

比如class ButtonEvent implements ActionListener{
public void actionPerformed(ActionEvent e){
//实例化StrParam
StrParam param = new StrParam();
//传递过去
new TestCfgGUI(test.testGUI,param);
}
}
}


楼主的实践太少,慢慢练习吧.
FFF9527 2008-04-03
  • 打赏
  • 举报
回复
想把代码写的规范一些,可这参数的问题真的比较的烦,全部挤到一个文件中倒是感觉好写些呢。
FFF9527 2008-04-03
  • 打赏
  • 举报
回复
莫办法啊~~参数之间搞的晕头转向的~~
对了,参数传递我也曾想过,可是你能明确的说一下,各个类里还需要加什么声明,
还有StrParam没有实例话啊,在那个位置上实例化StrParam~~~~~能在详细一点吗???
比如说new TestCfgGUI(test.testGUI)应该改成什么??
zhmt 2008-04-03
  • 打赏
  • 举报
回复
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);
}
}

差不多就这样子了,楼主努力阿.
FFF9527 2008-04-03
  • 打赏
  • 举报
回复
我要改构造函数的参数的方法,能帮我指明吗????????
zhmt 2008-04-03
  • 打赏
  • 举报
回复
TestCfgGUI(TestGUI testGUI){
this.testGUI = testGUI;
setSize(200, 100);
this.add(aTextField);
setVisible(true);
}
}

给TestCfgGUI增加一个set方法,把StrParam传过去,
这个构造函数就不要了,改成init方法.

不然的话 你就只有改constructor的参数.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧