黑马程序员技术交流社区

标题: 用了一个标签,怎么会没有效果,什么原因? [打印本页]

作者: 张 涛    时间: 2012-9-9 11:18
标题: 用了一个标签,怎么会没有效果,什么原因?
本帖最后由 张 涛 于 2012-9-23 07:25 编辑

代码如下:
  1. import java.awt.Color;
  2. import java.awt.Frame;
  3. import java.awt.Label;
  4. import java.awt.TextField;
  5. import java.awt.event.WindowAdapter;
  6. import java.awt.event.WindowEvent;

  7. public class GuiTest extends Frame{
  8.         //构造方法
  9.         GuiTest(String str){
  10.                 super(str);
  11.         }
  12.         //main方法中可以实现并使用该类对象。
  13.         public static void main(String[] args) {
  14.                 //new出窗口,并指定标题
  15.                 GuiTest gt = new GuiTest("注册表");
  16.                 //设置位置和大小
  17.                 gt.setBounds(100, 100, 300, 400);
  18.                 //设置布局方式为null,实现自定义
  19.                 gt.setLayout(null);

  20.                 //定义label,并添加
  21.                 Label label1 = new Label("姓名:");
  22.                 label1.setLocation(20, 20);
  23.                 gt.add(label1);

  24.                 //设置可见
  25.                 gt.setVisible(true);
  26.         }

  27. }
复制代码
为何运行只有frame,frame里面没有标签,为什么呢?

作者: 商秀川    时间: 2012-9-9 12:01
未设置Layout时,java默认为flowLayout布局的,最后一个添加的组件会居中而且原设置位置和原设置大小都无效。
所以要在实例化Frame之后设置setLayout。
你需要设置一下布局
gt.setLayout(new FlowLayout());//设置为流式布局管理


作者: 张 涛    时间: 2012-9-9 18:28
商秀川 发表于 2012-9-9 12:01
未设置Layout时,java默认为flowLayout布局的,最后一个添加的组件会居中而且原设置位置和原设置大小都无效 ...

我设置了setLayout(null),只不过设置的是null,想自己布置布局。
作者: 孙沛    时间: 2012-9-9 19:25
稍等哈哈!!
作者: 孙沛    时间: 2012-9-9 19:39
import java.awt.Color;
import java.awt.Frame;
import java.awt.*;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class GuiTest extends Frame{
                                GuiTest(String str){
                super(str);
        }
        public static void main(String[] args) {
                GuiTest gt = new GuiTest("ll");
                gt.setBounds(100, 100, 300, 400);
                                                                gt.setLayout(new FlowLayout());

                Label label1 = new Label("kk");
                label1.setLocation(20, 20);
                gt.add(label1);

                gt.setVisible(true);
        }

}
你试下这个,setLayout是需要设置布局形式的,没有布局形式,标签是无法显示的,因为他不知道以哪种形式显示出来。至于你说的自定义布局,你的写个布局的类,然后传进去才可以显示标签的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2