• GUI初步和frame&panel


    java的话这个GUI其实不是什么重点,但我们也要学习,重点是学习这种图形编程的思路。

    java里面对于图形的一些类都封装在了AWT和它的一些子包里。AWT(抽象窗口开发包)            当然AWT是比较旧的开发包,新的叫swing,

    所有可以显示出来的元素都叫component,然后下面那些什么Button,lable都是它的子类。,这里有个比较特殊的子类,container,在图形里面,container是用来容纳其他component的元素。然后这个container又分两种,一种是windows,它是可以独立显示的,哎就是我们平时的应用窗口,panel它也是容器,但它不可以独立显示。

    windows又分两种,一种是frame,就是我们平时的应用窗口,一种是dialog,对话框,就是那种框你不关闭掉它其他程序内容你无法操作。 

    下面看frame

    一些很容易理解的方法:

    *********基本窗口显示*********:
    import
    java.awt.*; public class TestFrame { public static void main(String[] args) { Frame f = new Frame("My first windows!!");//传进来的这个参数就是设置在titlebar的文字。 f.setSize(1000,1000);//大小 f.setBackground(Color.blue);//设置背景颜色 f.setLocation(485,10);//设它在屏幕上的位置(类比像素那什么1080*888) //f.setResizable(false);//设置窗口可不可以调节大小 f.setVisible(true);//Frame f = new Frame()这句话只是说建立了这个窗口对象,想要看得到还有用这个方法。 } }

     显示多个不同的窗口

    import java.awt.*;
    
    public class TestMultiFrame {
        public static void main(String[] args) {
            MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.BLUE);
            MyFrame myFrame2 = new MyFrame(300,100,200,200,Color.YELLOW);
            MyFrame myFrame3 = new MyFrame(100,300,200,200,Color.GREEN);
            MyFrame myFrame4 = new MyFrame(300,300,200,200,Color.WHITE);
        }
    }
    
    class MyFrame extends Frame {
        static int id = 0;
        MyFrame(int x , int y , int w , int h , Color color) {
            super("MyName"+id);//调用父类的构造方法,即取名字那个
            setBackground(color);
            setLayout(null);//把自己的布局管理器设为空,以后会讲,现在先照抄
            setBounds(x,y,w,h);
            setVisible(true);
        }
    }

    现在到panel:

    import java.awt.*;
    
    public class TestPanel1 {
        public static void main(String[] args) {
            Frame f = new Frame("Java with Panel");
            Panel p = new Panel(null);
            f.setLayout(null);
            f.setBounds(300,300,500,500);
            f.setBackground(new Color(0,0,100));
            p.setBounds(50,50,400,400);//这里的50,50的位置不是根据屏幕坐标来的,而是根据它所在的frame来的
            p.setBackground(new Color(204,204,255));
            f.add(p);
            f.setVisible(true);
        }
    }
    import java.awt.*;
    
    public class TestMultiPanel {
        public static void main(String[] args) {
            MyFrame2 f2 = new MyFrame2("MyFrame with panel",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);//代表panel不带自己的布局管理器
            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.WHITE);
            add(p1);//调用父类的方法
            add(p2);
            add(p3);
            add(p4);
            setBounds(x,y,w,h);
            setVisible(true);
        }
    }
  • 相关阅读:
    [BZOJ1691][Usaco2007 Dec]挑剔的美食家
    [BZOJ1056][BZOJ1862][HAOI2008][Zjoi2006]排名系统
    [POJ2892]Tunnel Warfare
    [BZOJ1588][HNOI2002]营业额统计
    [BZOJ1503][NOI2004]郁闷的出纳员
    [HDU4507]吉哥系列故事——恨7不成妻
    [codeforces 55]D. Beautiful numbers
    [HDU3709]Balanced Number
    [COJ0528]BJOI幸运数
    [TimusOJ1057]Amount of Degrees
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6885990.html
Copyright © 2020-2023  润新知