关于java窗体类问题,我写了两个代码,想要的效果是一样的但一个得不到想要的,下面有显示异常,一个成功

这一段是成功的importjava.awt.*;publicclassDictionaryTry{publicstaticvoidmain(String[]args){F... 这一段是成功的
import java.awt.* ;
public class DictionaryTry {
public static void main(String[] args){
Frame f = new Frame() ;
f.setTitle("英汉小词典");
f.setFont(new Font("宋体",Font.PLAIN,15));
f.setForeground(Color.blue) ;
f.setBackground(Color.lightGray) ;

Panel p = new Panel() ;
Label lb = new Label("输入单词:") ;
TextField tf = new TextField(20) ;
Button bt1 = new Button("查询") ;
Button bt2 = new Button("上一个单词") ;
Button bt3 = new Button("下一个单词") ;
p.add(lb) ;
p.add(tf) ;
p.add(bt1);
p.add(bt2) ;
p.add(bt3) ;

f.add(p,"North") ;

TextArea ta = new TextArea() ;
ta.setEnabled(false) ;

f.add(ta,"Center") ;
f.pack() ;
f.setVisible(true) ;
}

}

接下来的是失败的,请帮我看看出了什么问题
import java.awt.* ;
public class MyDictionary extends Frame {
Panel pl,pl2 ;
Label lb ;
TextField tf ;
TextArea ta ;
Button bt1,bt2,bt3 ;

MyDictionary(){

this.setVisible(true) ;
this.setTitle("英汉小词典") ;
this.setBackground(Color.lightGray) ;
this.setForeground(Color.red) ;
this.setFont(new Font("宋体",Font.PLAIN,15));

pl = new Panel() ;
lb = new Label("输入单词:") ;
tf = new TextField(20) ;
bt1 = new Button("查询") ;
bt2 = new Button("前一单词") ;
bt3 = new Button("后一单词") ;

pl.add(lb) ;
pl.add(tf) ;
pl.add(bt1) ;
pl.add(bt2) ;
pl.add(bt3) ;

this.add(pl,"North") ;

ta = new TextArea() ;
ta.setEnabled(true);
ta.setBackground(Color.white);
this.add(ta,"center") ;

pack();

}
}

public class DictionaryTest {

public static void main(String[] args){

MyDictionary md = new MyDictionary() ;

}
}
这个会显示这样Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: unknown constraint: center
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:463)
at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:424)
at java.awt.Container.addImpl(Container.java:1120)
at java.awt.Container.add(Container.java:966)
at MyDictionary.<init>(MyDictionary.java:38)
at DictionaryTest.main(DictionaryTest.java:6)

如果我加上一段流式布局的代码就不会有这个显示,但是得不到想要的效果,那个TextArea会显示不了,谢谢了帮我看看
展开
 我来答
雪飞潇潇
2017-05-13 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:868万
展开全部

分析错误java.lang.IllegalArgumentException: 参数错误.

原因:单词大小写拼写错误.this.add(ta,"center") ;  -->c要大写C

修改成为:this.add(ta,"Center") ; 

或者直接写出this.add(ta);//如果组件位于中央,可以省略Center

边界布局BorderLayout,添加组件时,需要指定添加的位置,有下面五个位置

BorderLayout.CENTER-------->Center( 如果组件位于中间.可以省略"Center")

BorderLayout.NORTH-------->North

BorderLayout.SOUTH-------->South

BorderLayout.WEST---------->West

BorderLayout.EAST----------->East

系统为了方便我们记忆和便利,避免出现单词大小写错误啊,拼写错误等 , 定义了一些常量,方便我们使用.就是上面左边的方式,在eclipse工具中,自动补全,很快书写出正确的方位

this.add(组件,BorderLayout.NORTH);等同于this.add(组件,"North");

但习惯上,大家都写前面一种方式

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式