美文网首页
Java图形化:JComponent组件

Java图形化:JComponent组件

作者: 我的袜子都是洞 | 来源:发表于2019-01-18 23:01 被阅读5次

    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);
        }
    }
    

    运行效果:


    JComponent容器

    相关文章

      网友评论

          本文标题:Java图形化:JComponent组件

          本文链接:https://www.haomeiwen.com/subject/cbnodqtx.html