java获取不到数值,不改变结构的情况下如何改代码。
第一个类publicclassMainA{publicstaticvoidmain(Stringargs[]){DengLuc=newDengLu();c.dl();}}...
第一个类
public class MainA
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
}
}
第二个类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DengLu
{
JFrame jf = new JFrame();
JButton jb1 = new JButton("确定");
JTextField jt= new JTextField(“初始”);
public void dl()
{
jf.add(jt);
jf.add(jb1);
jf.setLayout(new GridLayout(0,2)); //行数不限制,列数为2
jf.setSize(300,200); //窗体尺寸
jf.setVisible(true);
jb1.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
cs c = new cs();
c.s();
}
}
);
jf.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public String geta()
{
String m =jt.getText().trim();
return m;
}
}
第三个类
public class cs
{
public void s()
{
DengLu du = new DengLu();
System.out.println(du.geta());
}
}
运行结果为初始,不论输入什么进去都是,因为我想把第三个专门写成一个参数临时存储类,所以结构不能修改,感觉就是denglu类中的方法geta()只运行了一次,求指教。 展开
public class MainA
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
}
}
第二个类
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DengLu
{
JFrame jf = new JFrame();
JButton jb1 = new JButton("确定");
JTextField jt= new JTextField(“初始”);
public void dl()
{
jf.add(jt);
jf.add(jb1);
jf.setLayout(new GridLayout(0,2)); //行数不限制,列数为2
jf.setSize(300,200); //窗体尺寸
jf.setVisible(true);
jb1.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
cs c = new cs();
c.s();
}
}
);
jf.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
public String geta()
{
String m =jt.getText().trim();
return m;
}
}
第三个类
public class cs
{
public void s()
{
DengLu du = new DengLu();
System.out.println(du.geta());
}
}
运行结果为初始,不论输入什么进去都是,因为我想把第三个专门写成一个参数临时存储类,所以结构不能修改,感觉就是denglu类中的方法geta()只运行了一次,求指教。 展开
5个回答
展开全部
你想要输出结果,你就要有相应的输出语句,在你的第一个类中仅创建了一个对象,也只调用了第二个类。然而对于第三个类的调用却没有,正好第三个类的作用就是帮你输出你的数值。所以你应该把第一个类改成:
public class MainA
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
c.cs();
}
}
public class MainA
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
c.cs();
}
}
追问
运行报错?没有cs()这个方法啊,而且我的输出也没有问题,只不过他获取的是初始值,后面我输入其他的数值,获取不到而已,我考虑多其他类直接引用JTextField的对象,不过据说这样不好,必须用方法的方式传递
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改:
public class A
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
}
}
---修改2DengLu.java
jf.setVisible(true);
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cs c = new cs();
c.s(DengLu.this);
}
});
public class A
{
public static void main(String args[])
{
DengLu c = new DengLu();
c.dl();
}
}
---修改2DengLu.java
jf.setVisible(true);
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cs c = new cs();
c.s(DengLu.this);
}
});
追问
无法将c的s应用于(DengLu)
追答
修改这里才对
public class cs
{
public void s(DengLu du)
{
System.out.println(du.geta());
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MainA里创建了Denglu,调用了dl()方法,dl()方法内部调用了cs的s(),s()内部用new了DengLu,调用了DengLu的geta(),在调用geta()时是不是jt是新new出来的对象的属性.所以一直是初始..本人学的不好,不知道是不是这样
追问
基本是,但是我的geta()方法里有运行啊,他为什么不在我调用的时候,再次获取新值了?
追答
因为geta()是在cs.s()里面调用的.这个cs对象是点确定的时候新new 出来的对象,每点一次,就新创建一个cs对象,在这个新的cs对象的s()函数里再new一个新的DengLu对象,这个新new出来的DengLu对象的jt.getText().trim();还是初始属性吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在cs中,在cs中立即构造了一个DengLu类,然后立即输出geta()的值,当然是初始的。
追问
如果在cs中获取值,那是不是要通过直接调用DengLu里面的JTextField的对象,那不是说这样的值传递不规范吗?
追答
如果cs是你设计为只显示数据的可以考虑把DengLu作为参数传递给cs,如果数据量大的可以构造一个数据类专门存储数据,把这个传递给 cs去显示。java规范性我不了解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
swing的,不太懂.
追问
········
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询