一道java问题!!!急求高手回答~~小弟在此先谢过!

我做的java,最终结果文本框和标签无法显示,但是功能还是有,输入数字和回车键有反应。这是什么情况?急求高手帮帮忙。非常急。。。在线等。。。代码如下:importjava... 我做的java,最终结果文本框和标签无法显示,但是功能还是有,输入数字和回车键有反应。这是什么情况?急求高手帮帮忙。非常急。。。在线等。。。

代码如下:
import java.awt.event.*;
import java.awt.*;
public class zuoye extends Frame implements ActionListener,WindowListener
{ Label directions,celsius;
TextField enter;
zuoye(String s)
{
super(s);
setSize(300,150);
addWindowListener(this);
directions=new Label("输入华氏摄氏度:");
add(directions);
enter=new TextField(2);
add(enter);
enter.addActionListener(this);
celsius=new Label(" ");
celsius.setFont(new Font("TimesRoman 12 point bold.",20,20));
add(celsius);
setVisible(true); //建立一个窗口,可以对输入的华氏温度做出反应
}
public void windowActivated(WindowEvent event) {}
public void windowClosed(WindowEvent event) {}
public void windowClosing(WindowEvent event){System.exit(0);}
public void windowDeactivated(WindowEvent event) {}
public void windowDeiconified(WindowEvent event) {}
public void windowIconified(WindowEvent event){}
public void windowOpened(WindowEvent event) {}
public void actionPerformed(ActionEvent event)
{int f=Integer.parseInt(enter.getText());
long c=Math.round(5.0*(f-32)/9.0);
enter.setText("");
if(c<=25){
celsius.setText(f+"华氏度="+c+"摄氏度"+" "+"气温较低,注意保暖");}
else if(c<=30){
celsius.setText(f+"华氏度="+c+"摄氏度"+" "+"气温适中,适合户外活动");}
else if(c<40){
celsius.setText(f+"华氏度="+c+"摄氏度"+" "+"气温较高,注意防暑");}
//反应的结果是向窗口输出与华氏温度相对应的摄氏温度,如32华氏摄氏度等于0摄氏度,并作出相应提示
}
}
class Test{
public static void main(String[] args)
{new zuoye("温度转换器");}
}
展开
 我来答
匿名用户
2010-07-06
展开全部
class zuoye extends Frame 说明zuoye是Frame的子类,Frame的默认布局方式是BorderLayout,所以你add(directions); add(enter); add(celsius);相当于add(directions,BorderLayout.CENTER);
add(enter,BorderLayout.CENTER); add(celsius,BorderLayout.CENTER);
所以只有add(celsius);有效。你可以把前面的标签directions和文本域enter放到一个Panel里,然后把panel放到Frame的NORTH方向,
即:add(panel,BorderLayout.NORTH);,把celsius加到Frame的center部分就可以了。
以上内容都是一个一个字打出来的,也解决了您的问题,哥们给分吧!!!
muyufeng5208
2010-07-04 · TA获得超过118个赞
知道答主
回答量:215
采纳率:0%
帮助的人:156万
展开全部
哥子,你不用布局管理器。就要设为空。还要定位才会出来

要用布局管理器,就得去好好看一下API上面有列子
给分走人

public zuoye(String s) {
this.setSize(800, 600);
this.addWindowListener(this);
directions = new Label("输入华氏摄氏度:");
directions.setBounds(0, 10, 100, 100);
this.add(directions);
enter = new TextField(2);
enter.setBounds(200, 50, 200, 20);
this.add(enter);
enter.addActionListener(this);
celsius = new Label("???????");
celsius.setBounds(100, 100, 100, 300);
celsius.setFont(new Font("TimesRoman 12 point bold.", 20, 20));
this.add(celsius);
this.setLayout(null);//设置布局管理器为空
this.setVisible(true); // 建立一个窗口,可以对输入的华氏温度做出反应
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mzocean
2010-07-04 · TA获得超过1083个赞
知道小有建树答主
回答量:492
采纳率:33%
帮助的人:463万
展开全部
我在你的zuoye类的构造方法里面加入了布局管理器,东西就出来了
setLayout(new FlowLayout()),具体为何我也说不出来。
还有我建议你把main方法的类作为public,zuoye类就不加public了,
还有 celsius=new Label(" ");改为celsius=new Label(" ");
完毕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luxin1102
2010-07-06 · TA获得超过348个赞
知道小有建树答主
回答量:84
采纳率:100%
帮助的人:70.2万
展开全部
最简单的改法,加一个Panel,原因楼上的已经说的很明白了,要有布局管理器,Panel自带布局管理器。

Panel p = new Panel();

zuoye(String s) {
super(s);
setSize(300, 150);
addWindowListener(this);
directions = new Label("输入华氏摄氏度:");
p.add(directions);
enter = new TextField(2);
p.add(enter);
enter.addActionListener(this);
celsius = new Label(" ");
celsius.setFont(new Font("TimesRoman 12 point bold.", 20, 20));
p.add(celsius);
this.add(p);
setVisible(true); // 建立一个窗口,可以对输入的华氏温度做出反应
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式