//大家帮帮我..下面这段程序有个问题
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class zhuFrame extends JFrame
{ //创建一个文本区
JTextArea jtx=new JTextArea("一,二,三,四,五,六,七,八,九,十");
public zhuFrame()//构造数
{
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
setLayout(new BorderLayout());//设置布局
add(jtx);//增加文本区
setSize(600,480);//设置窗体大小
show(); //显示窗体
}
}
class Run//运行类
{
public static void main(String args[])
{
new zhuFrame();//打开zhuFrame窗体
new ling();//打开zhuFrame窗体
}
}
class ling extends JFrame//另一个窗体
{
zhuFrame z=new zhuFrame();//为了能调用zhuFrame的jtx这里加了一个实例
//但是问题是这里会产生一个zhuFrame窗体;
//请问如何不让它产生这个窗体,而且还能调用zhuFrame的jtx
JButton jb1=new JButton("改变zhuFrame的文本框内容");//创建一个按钮
public ling()//构造函数
{
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
add(jb1);//添加这个按钮
jb1.addActionListener(new ActionListener(){//添加按钮监听器
public void actionPerformed(ActionEvent e)
{
int x=9999;//定义一个数
double y=x * Math.random();//定义另一个数
z.jtx.setText(""+y);//改变zhuFrame中的jtx文本区内容
}
});
setSize(200,200);//设置窗体大小
show();//显示窗体
}
}
----------------解决方案--------------------------------------------------------
不产生一个对象又想引用一对象,很简单,在构造函数中把它做为参数就可以了
----------------解决方案--------------------------------------------------------
不好意思.不是很懂.我试了几次但都会报错.我学java时间很短,知识量还太浅,所以请前辈说的明白一点.
最好能写出代码.
再次谢谢
----------------解决方案--------------------------------------------------------
刚学JAVA的话,就先把基础的东西学好
现在给你代码你也是看不懂的,一步一步来,到了一定程度就自然而然的知道怎么写了
----------------解决方案--------------------------------------------------------
真有"千里冰封"的感觉呀.
这位,前辈,真COOL...^_^
----------------解决方案--------------------------------------------------------
上面的代码是不能运行的吧 `
----------------解决方案--------------------------------------------------------
//大家帮帮我..下面这段程序有个问题
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.Frame;
class zhuFrame extends JFrame
{
//创建一个文本区
JTextArea jtx=new JTextArea("一,二,三,四,五,六,七,八,九,十");
public zhuFrame()//构造数
{
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
getContentPane().setLayout(new BorderLayout());//设置布局
getContentPane().add(jtx);//增加文本区
setSize(600,480);//设置窗体大小
show(); //显示窗体
}
}
class Run//运行类
{
public static void main(String args[])
{
new zhuFrame();//打开zhuFrame窗体
new ling();//打开zhuFrame窗体
}
}
class ling extends JFrame//另一个窗体
{
zhuFrame z=new zhuFrame();//为了能调用zhuFrame的jtx这里加了一个实例
//但是问题是这里会产生一个zhuFrame窗体;
//请问如何不让它产生这个窗体,而且还能调用zhuFrame的jtx
JButton jb1=new JButton("改变zhuFrame的文本框内容");//创建一个按钮
public ling()//构造函数
{
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
getContentPane().add(jb1);//添加这个按钮
jb1.addActionListener(new ActionListener()
{
//添加按钮监听器
public void actionPerformed(ActionEvent e)
{
int x=9999;//定义一个数
double y=x * Math.random();//定义另一个数
z.jtx.setText(""+y);//改变zhuFrame中的jtx文本区内容
//jtx.setText("y="+y);
}
});
setSize(200,200);//设置窗体大小
show();//显示窗体
}
}
你要的是不是这个结果`?
----------------解决方案--------------------------------------------------------
和我原来的结果是一样的呀.还是会在ling窗体创建同时产生zhuFrame这个窗体呀.
我是想只有一个zhuFrame窗体和一个ling窗体,这两个窗体不在同一个类中,
但ling这个窗体里中有对zhuFrame这个窗体中的jtx(文本区)修改的能力.
谢谢哦
----------------解决方案--------------------------------------------------------
public ling()//
把这个构造函数的参数设为 zhuFrame就可以了
改为
zhuFrame z;
public ling(zhuFrame z){
this.z=z;
//其余不变
}
这样你可以用zhuFrame而不用重新生成一个对象了
----------------解决方案--------------------------------------------------------
//前辈这个程序照您说的改了还是会报错.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class zhuFrame extends JFrame
{ //创建一个文本区
JPanel jpb=new JPanel();//创建按键面板
JPanel jptx=new JPanel();//创建文本区面板
JTextArea jtx=new JTextArea("一,二,三,四,五,六,七,八,九,十");//创建文本区
JButton jbo=new JButton("打开动作窗口");//创建按键
public zhuFrame()//构造函数
{
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
setLayout(new BorderLayout());//设置布局
add(jpb,BorderLayout.NORTH);//增加文本区
jpb.setLayout(new FlowLayout());//设置布局为流式
jpb.add(jbo);//在面板上加上按键
jbo.addActionListener(new ActionListener(){//按键添加监听器
public void actionPerformed(ActionEvent e)
{
new ling();//打开ling窗体
}
});
add(jptx,BorderLayout.CENTER);//添加文本区面板
jptx.setLayout(new GridLayout());//设置布局为网络
jptx.add(jtx);//文本区面板加上文本区
setSize(600,480);//设置窗体大小
show(); //显示窗体
}
}
class Run//运行类
{
public static void main(String args[])
{
new zhuFrame();//打开zhuFrame窗体
}
}
class ling extends JFrame//另一个窗体
{
///////////////////////////////////////////////////////////////////////////////
// zhuFrame z=new zhuFrame();//为了能调用zhuFrame的jtx这里加了一个实例
zhuFrame z;
//***********************
//但是问题是这里会产生一个zhuFrame窗体;
//请问如何不让它产生这个窗体,而且还能调用zhuFrame的jtx
JButton jb1=new JButton("改变zhuFrame的文本框内容");//创建一个按钮
// public ling()//构造函数
public ling(zhuFrame z)
{//***********************
super.setDefaultCloseOperation(3);//设置窗体的关闭按钮
this.z=z;
//*****************
///////////////////////////////////////////////////////////////////////////////
add(jb1);//添加这个按钮
jb1.addActionListener(new ActionListener(){//添加按钮监听器
public void actionPerformed(ActionEvent e)
{
int x=9999;//定义一个数
double y=x * Math.random();//定义另一个数
z.jtx.setText(""+y);//改变zhuFrame中的jtx文本区内容
}
});
setSize(200,200);//设置窗体大小
Toolkit t=Toolkit.getDefaultToolkit();//得到屏幕尺寸
int w=t.getScreenSize().width;//定义一个变量接受屏幕的宽
setLocation( (int)w-getSize().width,0);//设定ling窗体的显示位置
show();//显示窗体
}
}
//报错如下
/*
--------------------Configuration: <Default>--------------------
D:\JAVA\huatu\huatutan.java:24: cannot find symbol
symbol : constructor ling()
location: class ling
new ling();//打开ling窗体
^
D:\JAVA\huatu\huatutan.java:64: local variable z is accessed from within inner class; needs to be declared final
z.jtx.setText(""+y);//改变zhuFrame中的jtx文本区内容
^
Note: D:\JAVA\huatu\huatutan.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
2 errors
Process completed.
*/
----------------解决方案--------------------------------------------------------