| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:[求助]紧急求救
只看楼主 加入收藏
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
 问题点数:0 回复次数:4 
[求助]紧急求救
刚开始看swing,这是我看完书以后的一个实验:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Tes extends JFrame{
 JButton jb;
 JTextArea ja;
 //(1)JDialog jd;
 Tes(){
  super("pk");
  Container c=this.getContentPane();
  jb=new JButton("a");
  ja=new JTextArea(10,10);
 //  (2)jd=new JDialog(this,"b");
 //(4) jd.setVisible(true);
  c.add(jb,BorderLayout.NORTH);
  c.add(ja,BorderLayout.EAST);
  //(3)c.add(jd,BorderLayout.WEST);
  setVisible(true);
     addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
    System.exit(0);
   }
  });
 }
 public static void main(String arg[]){
  Tes t=new Tes();
  t.pack();
 }
}
这样运行没有问题,但当我把(1)(2)(3)语句添加上的时候,窗口出不来,会在命令提示符下出现:
Exception in thread "main"java.lang.IllegalArgumentException:adding
a window to a container.........
进一步,如果我把(4)加上去的话,JFrame还是出不来,JDialog确出来了,但上面那句报错却依然存在.
各位前辈请指点一下吧~~拜托.
搜索更多相关主题的帖子: import add awt Tes 
2005-10-06 19:41
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
刚才看下书,明白了,好象是因为容器中不能既有轻组件又有重组件的缘故.
是这样吗?
怎么解决呢?
kai斑竹不要看见了不管哦~

2005-10-06 20:44
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
apodemas, see code... import java.awt.*; import java.awt.event.*; import javax.swing.*; class Tes extends JFrame { JButton jb; JTextArea ja; JDialog jd; Tes() { super("pk"); Container c = getContentPane(); MyButtonListener bl = new MyButtonListener(); jb = new JButton("a"); jb.addActionListener(bl); ja = new JTextArea(10,10); jd=new JDialog(this,"b"); JLabel label = new JLabel("Hello apodemas, I am kai. ", JLabel.CENTER); jd.getContentPane().add(label); jd.setSize(200,100); jd.setLocationRelativeTo(this); c.add(jb,BorderLayout.NORTH); c.add(ja,BorderLayout.EAST); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } class MyButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if(o == jb) jd.setVisible(true); } } public static void main(String arg[]) { Tes t=new Tes(); t.pack(); } }

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-10-06 22:33
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
收藏
得分:0 
感谢kai斑竹的帮忙,我刚才实验了下您的代码,然后把无关紧要的去掉,直到和我原来的代码差不多,竟然发现能正常运行.
后来仔细一看才知道我那代码罪魁祸首是"c.add(jd,BorderLayout.WEST);",真是晕到家了
怪我习惯性的添上去了.
但还有个问题就是我上面那段解释是,书上那段话是对还是错呢?JFrame是窗体,JDialog是重组件,JButton和JTextArea是轻组件,书上说尽量不要把轻重都放在一个窗体里,而且书上的例子遇到放一起也都放在JApplet里.
起码看起来这段代码的错原因不是这个了.

2005-10-06 23:19
lcm
Rank: 4
等 级:贵宾
威 望:13
帖 子:140
专家分:0
注 册:2005-2-4
收藏
得分:0 
kai斑竹 真不赖。。。两三下就搞定。。。
Japplet、JFrame、Jdialog类的子类是重组件, Jcomponent类的子类是轻组件,轻组件必须在重量组件中绘制自己。

从 小 事 做 起,脚 踏 实 地 ~
2005-10-07 00:19
快速回复:[求助]紧急求救
数据加载中...
 
   



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

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