zoukankan      html  css  js  c++  java
  • GUI图形界面编程总结之Frame,Panel

    GUI:Graphical User Interface,即图形用户界面,用于计算机与用户交互的一种方式

    AWT:Abstract Window Toolkit,抽象窗口开发包。重量级组件。在Windows系统与Linux系统都可运行,但由于是调用操作系统实现的组件,在两个平台运行后并不是完全相同,可移植性一般。

    位于java.awt包中。

    Swing:在AWT基础上发展而来,轻量级组件,不依赖操作系统的支持,可移植性较好。

    位于javax.swing包中。

    java.AWT中主要的类:

    image001

    Component:封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等。其对象不能独立显示。

    注意:组件包括基本组件与容器组件,容器组件用于容纳其他组件

    Container:封装了容器组件类的通用的方法和属性

    注意:容器组件不但能容纳基本组件,还能容纳其他容器组件

    Window:顶级窗口,可独立存在

    Panel: 确定一个四边形,可以添加其他组件(add()方法),但必须放在Window或Window的子类之中,才能显示出来。

    Frame:可以添加其他组件(add()方法),具有标题和缩放角

    Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入

    TextComponent:允许编辑文本的组件的超类

    TextField:创建文本框对象

    TextArea:显示文本的多行区域。可以将它设置为允许编辑或只读

    Button:标签按钮。当按下该按钮时,应用程序能执行某项动作

    Label:显示一行只读文本。文本可由应用程序更改,但是用户不能直接对其进行编辑

    Frame用法:

    import java.awt.Color;
    import java.awt.Frame;
    
    /**
     * java GUI中Frame常用用法
     * 2014-4-14
     * @author Administrator
     *
     */
    public class FrameDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //创建一个初始不可见的窗口f1(参数显示标题)
            Frame f1=new Frame("The first frame");
            ////设置窗口大小(参数是宽度及高度,单位是像素)
            f1.setSize(23,45);
            ////设置窗口的位置(参数是坐标)
            f1.setLocation(15,20);
            //调用类的成员来显示窗口颜色
            f1.setBackground(Color.blue);
            //设置是否可以调整大小
            f1.setResizable(true);
            //设置是否可见
            f1.setVisible(true);
            //创建一个初始不可见的窗口f2
            Frame f2=new Frame();
            //设置窗口位置大小
            f2.setBounds(70,140,50,200);
            f2.setBackground(Color.BLUE);
            //设置窗口标题
            f2.setTitle("The second frame");
            //设置是否可以调整大小
            f2.setResizable(false);
            //设置是否可见
            f2.setVisible(true);
            //获得f2窗口标题
            System.out.println(f2.getTitle());
        }
    
    }

    通过继承创建Frame窗口

    import java.awt.*;
    /**
     * java GUI中Frame类的继承使用
     * 2014-4-15
     * @author Administrator
     *
     */
    public class FrameDemo2 {
    
        private static final Color BLUE = null;
        private static final Color YELLOW = null;
        private static final Color RED = null;
        private static final Color GREEN = null;
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //Color类的常量大小写用法一致,但建议用大写,为了符合规范
            MyFrame f1=new MyFrame(100,100,200,200,Color.blue,"first");
            MyFrame f2=new MyFrame(300,100,200,200,Color.green,"second");
            MyFrame f3=new MyFrame(100,300,200,200,Color.orange,"third");
            MyFrame f4=new MyFrame(300,300,200,200,Color.CYAN,"Fourth");
        }
    }
    
    
    class MyFrame extends Frame{
        MyFrame(int x,int y,int a,int b,Color c,String s){
            //创建窗口的几个主要元素:位置参数,大小,颜色,布局管理器,
            //s是否可以调整大小,是否可见
            super("This is my"+s+"frame");
            setBounds(x,y,a,b);
            setBackground(c);
            setResizable(true);
            //布局管理器
            setLayout(null);
            setVisible(true);
        }
    }

    创建嵌套窗口,Panel窗口嵌套在Frame中

    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.Panel;
    /**
     * java GUI Panel用法
     * 2014-4-15
     * @author Administrator
     *
     */
    
    public class PanelDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Frame f=new Frame("Frame with Panel");
            f.setBounds(300, 300, 500, 500);
            f.setBackground(Color.LIGHT_GRAY);
            f.setResizable(true);
            f.setLayout(null);
            Panel p=new Panel(null);
            //Panel窗口的位置参数是以Frame窗口左上角为基准
            p.setBounds(50, 50,400, 400);
            //通过Color类三原色构造方法设置窗口颜色
            p.setBackground(new Color(0,0,254));
            //将Panel窗口添加到Frame中
            f.add(p);
            f.setVisible(true);
            
            
            
            
        }
    
    }

    继承的写法:

    import java.awt.*;
    
    public class TestMultiPanel {
        public static void main(String args[]) {
            new MyFrame2("MyFrameWithPanel",300,300,400,300);
        }
    }
    
    
    class MyFrame2 extends Frame{
        private Panel p1,p2,p3,p4;
        MyFrame2(String s,int x,int y,int w,int h){
            super(s);
            setLayout(null);
            p1 = new Panel(null); p2 = new Panel(null);
            p3 = new Panel(null); p4 = new Panel(null);
            p1.setBounds(0,0,w/2,h/2);
            p2.setBounds(0,h/2,w/2,h/2);
            p3.setBounds(w/2,0,w/2,h/2);
            p4.setBounds(w/2,h/2,w/2,h/2);
            p1.setBackground(Color.BLUE);
            p2.setBackground(Color.GREEN);
            p3.setBackground(Color.YELLOW);
            p4.setBackground(Color.MAGENTA);
            add(p1);add(p2);add(p3);add(p4);
            setBounds(x,y,w,h);
            setVisible(true);
        }
    }

    参考资料:尚学堂马士兵视频教程。

  • 相关阅读:
    flink-cdc读取postgres报异常,没有发布表
    yum 安装高版本Git
    分布式存储FastDFS搭建
    ElasticSearch6.5.1集群部署
    CentOS7 OpenSSH编译安装升级
    K8S使用ceph实现持久化存储
    ceph分布式集群的搭建
    canal服务搭建
    MySQL-5.7.31的搭建
    基于CentOS7.6使用KubeOperator安装Kubernetes集群
  • 原文地址:https://www.cnblogs.com/shangshicc/p/3666584.html
Copyright © 2011-2022 走看看