标题:[求助]新手请问一个关于JFrame窗体的问题
只看楼主
flying_sbps
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-27
 问题点数:0 回复次数:16 
[求助]新手请问一个关于JFrame窗体的问题

//大家帮帮我..下面这段程序有个问题
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();//显示窗体
}
}

搜索更多相关主题的帖子: JFrame 窗体 
2006-05-27 13:53
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

不产生一个对象又想引用一对象,很简单,在构造函数中把它做为参数就可以了


可惜不是你,陪我到最后
2006-05-27 14:59
flying_sbps
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-27
得分:0 
不好意思.不是很懂.我试了几次但都会报错.我学java时间很短,知识量还太浅,所以请前辈说的明白一点.
最好能写出代码.
再次谢谢
2006-05-27 22:16
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
刚学JAVA的话,就先把基础的东西学好
现在给你代码你也是看不懂的,一步一步来,到了一定程度就自然而然的知道怎么写了

可惜不是你,陪我到最后
2006-05-28 11:05
flying_sbps
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-27
得分:0 

真有"千里冰封"的感觉呀.
这位,前辈,真COOL...^_^

2006-05-28 19:59
shiyide
Rank: 2
等 级:新手上路
威 望:4
帖 子:297
专家分:0
注 册:2006-2-22
得分:0 
上面的代码是不能运行的吧 `

学好编程,为中国的软件事业出一份力。
2006-05-28 20:55
shiyide
Rank: 2
等 级:新手上路
威 望:4
帖 子:297
专家分:0
注 册:2006-2-22
得分:0 

//大家帮帮我..下面这段程序有个问题
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();//显示窗体
}
}
你要的是不是这个结果`?


学好编程,为中国的软件事业出一份力。
2006-05-28 21:36
flying_sbps
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-27
得分:0 

和我原来的结果是一样的呀.还是会在ling窗体创建同时产生zhuFrame这个窗体呀.
我是想只有一个zhuFrame窗体和一个ling窗体,这两个窗体不在同一个类中,
但ling这个窗体里中有对zhuFrame这个窗体中的jtx(文本区)修改的能力.
谢谢哦

2006-05-29 09:12
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
public ling()//
把这个构造函数的参数设为 zhuFrame就可以了
改为
zhuFrame z;
public ling(zhuFrame z){
this.z=z;
//其余不变
}
这样你可以用zhuFrame而不用重新生成一个对象了

可惜不是你,陪我到最后
2006-05-29 10:43
flying_sbps
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-27
得分:0 

//前辈这个程序照您说的改了还是会报错.
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.
*/

2006-05-29 11:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67710-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052117 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved