zoukankan      html  css  js  c++  java
  • Absolute Layout

    ----------------siwuxie095

       

       

       

       

       

       

    根面板 contentPane 的默认布局为 Border Layout,将其

    切换为 Absolute Layout

       

    Absolute Layout 即 绝对布局,即 它没有任何的限制,可以

    在界面中任意摆放控件的位置

       

    在将控件拖动到面板上时,会出现参考线,参考线仅仅是

    为了在界面中摆放元素时给出参考,而不具有任何实质性

    的吸附功能

       

    「如果不使用参考线,可以自由的将控件移动到任何位置」

       

       

       

       

    当在面板中摆放好某控件,该控件的坐标和大小都是固定的,

    不会随窗体的缩放而产生任何变化

       

       

    在绝对布局的情况下,可以在代码中任意修改元素的坐标和大小

       

    contentPane 中添加一个 JLabel,将其文本(text)改为:

    This is a label,Rename 为:label

       

    Source 中修改代码:

       

       

       

       

    效果如下:

       

       

       

       

       

    contentPane 中添加一个 JButton,将其文本(text)改为:

    Run,Rename 为:btnRun

       

    在绝对布局中,虽然不会有布局管理器帮助摆放,但是可以提供

    最佳的灵活性

       

    如:可以编写一个线程来为当前的控件提供动画(放大缩小、位置移动)

       

    JButton 添加鼠标点击事件,当点击 Run 时,JLabel 上下浮动

       

    JButton btnRun = new JButton("Run");

    btnRun.addMouseListener(new MouseAdapter() {

    @Override

    public void mouseClicked(MouseEvent arg0) {

    //创建一个 SwingWoker 线程,指定泛型为 String Integer

    //要覆盖 doInBackground() process() 方法

    //创建完成后,需要调用 execute() 方法,将它运行

    new SwingWorker<String, Integer>() {

    //获取 Y 的原坐标,需要将 label 的声明转移到类中

    int originalY=label.getY();

       

    @Override

    protected String doInBackground() throws Exception {

    while (true) {

    //每隔 50 毫秒执行一次

    Thread.sleep(50);

    //System.currentTimeMillis() 1970年到当前时间的毫秒值

    //先从整型转换成浮点型,又从浮点型转换成整型

    // 100 表示运动的快慢(越小速度越快,反比),

    // 20 表示运动的幅度(越小幅度越小,正比)

    //将值 publish() process()

    publish((int)(Math.sin(System.currentTimeMillis()/100)*20));

    }

    }

    @Override

    protected void process(List<Integer> chunks) {

    // chunks 中把值取出来

    for (int dynamicY : chunks) {

    //X 坐标不变,Y 坐标变化,为标签做了一个正弦的动画

    label.setLocation(label.getX(), originalY+dynamicY);

    }

    }

    }.execute();

    }

    });

       

       

    效果如下:

       

       

       

       

       

    在绝对布局中,当控件出现重叠时,层级高的控件会挡住

    层级低的控件,并接收鼠标事件

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    2020年9月12日 线程的安全问题:同步方法;
    2020年9月12日 线程的安全问题:线程使用共享数据 产生的安全问题
    2020年9月11日 编写龟兔赛跑的多线程程序
    2020年9月9日 为什么要有包装类、包装类有哪些、装箱与拆箱、包装类的API、包装类对象的缓存问题
    2020年9月4日 try catch finally遇见return的时候返回值是啥?(面试题)
    2020年9月4日 异常
    2020年9月4日 异常处理
    2020年9月3日 内部类总结
    2020年9月3日 静态导入
    2020年9月3日 自定义注解和元注解
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6662921.html
Copyright © 2011-2022 走看看