Java图形化:JComponent组件

JComponent是一个和JPanel很相似的组件的容器,但又有区别。 JPanel不透明,所以在需要透明等应用场景的条件比较麻烦,使用JComponent比较方便。

package swing;

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

/**
 * @author: 我的袜子都是洞
 * @description:
 * @path: tourJava-swing-NotHelloWorld
 * @date: 2019-01-18 22:48
 */
public class NotHelloWorld {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            JFrame frame = new NotHelloWorldFrame();
            frame.setTitle("Not Hello World");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }
}

class NotHelloWorldFrame extends JFrame {
    public NotHelloWorldFrame () {
        add(new NotHelloWorldComponent());
        // 调整窗口大小,要考虑到其组件的首选大小
        pack();
    }
}

/**
 * JComponent不同于JPanel,JPanel不透明,JComponent透明
 */
class NotHelloWorldComponent extends JComponent {
    public static final int MESSAGE_X = 75;
    public static final int MESSAGE_Y = 100;

    public static final int DEFAULT_WIDTH = 300;
    public static final int DEFAULT_HEIGHT = 200;

    public void paintComponent (Graphics g) {
        g.drawString("Not a hello world program", MESSAGE_X, MESSAGE_Y);
    }

    public Dimension getPreferredSize () {
        return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }
}
复制代码

运行效果:

转载于:https://juejin.im/post/5c67d726e51d45403f2a9fdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值