javaGUI入门之swing(一)

前面学过javafx,发现他们有“异曲同工”之处,demo写起来也类似,无非是类名不一样。个人觉得实现一个桌面应用不应该只看用一种语言一种框架来实现,多种配合也能实现。能实现就好,不应该过多关注某个框架,swing可以说jetbrains的贡献很大,他们的产品idea系列就是基于这个来实现的。运行时可以去github搜索jetbrains,他们开源了基于jdk11、openjdk 11的运行jdk。

package top.lingkang.test.gui;

import javax.swing.*;
import java.awt.*;

/**
 * @author lingkang
 * Created by 2022/8/9
 */
public class Test04 extends JFrame {
    public Test04() throws HeadlessException {
        // 基础设置
        setTitle("my JFrame");
        setSize(250, 300);
        // 添加组件
        JLabel jLabel = new JLabel("hello world!");
        add(jLabel);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    // 任意线程中更新UI,底层原理是让并发变串行执行
                    SwingUtilities.invokeLater(new Runnable() {
                        @Override
                        public void run() {
                            jLabel.setText("update");
                        }
                    });
                } catch (InterruptedException e) {
                }
            }
        }).start();
        
        // 可视化
        setVisible(true);
        // 点击关闭退出程序
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        // 创建swing实例
        new Test04();
    }
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐