Java GUI学习

一.第一个运行实例

package banking;
import  java.awt.Frame;
import java.awt.Color;

public class FirstFrame extends Frame {
    public FirstFrame(String str){
        super(str);//给框架命名
    }
    public static void main(String[] args) {
        FirstFrame fr = new FirstFrame("Hello");//第一个框架名字叫“Hello”

        //以下是设置框架的各个参数
        fr.setSize(240,240);
        fr.setBackground(Color.GRAY);
        fr.setVisible(true);//frame的默认是不可见的
    }
}

运行结果(发现不同的电脑运行出来的默认图片不一样,同时这个框是无法通过按×自动关闭的,必须是在编译器中红色按键关闭)

二.将panel面板容器加入Frame中

package banking;
import  java.awt.Frame;//一个基本的框架工具
import java.awt.Color;
import java.awt.Panel;//无法独立存在的透明容器,必须放在其他容器中使用

public class FirstFrame extends Frame {
    public FirstFrame(String str){
        super(str);//给框架命名
    }
    public static void main(String[] args) {
        FirstFrame fr = new FirstFrame("Hello");//第一个框架名字叫“Hello”

        //以下是设置框架的各个参数
        fr.setSize(440,440);
        fr.setBackground(Color.gray);
        //fr.setVisible(true);//frame的默认是不可见的


        //以下是在frame容器的基础上创建panel并设置参数
        Panel pan = new Panel();
        pan.setSize(100,100);
        pan.setBackground(Color.blue);

        fr.add(pan);//panel必须在一个容器中显示,通过add方法pan就成为了fr的一部分,性质可以由fr操控
        fr.setVisible(true);//此时是将pan的可见性仪器设置了
    }
}

但是发现只能显示panel的颜色,这是为什么呢。。。

是因为在Frame中的默认布局没有取消,修改的代码如下:

package banking;
import  java.awt.Frame;//一个基本的框架工具
import java.awt.Color;
import java.awt.Panel;//无法独立存在的透明容器,必须放在其他容器中使用

public class FirstFrame extends Frame {
    public FirstFrame(String str){
        super(str);//给框架命名
    }
    public static void main(String[] args) {
        FirstFrame fr = new FirstFrame("Hello");//第一个框架名字叫“Hello”

        //以下是设置框架的各个参数
        fr.setSize(440,440);
        fr.setBackground(Color.gray);
        //fr.setVisible(true);//frame的默认是不可见的
        fr.setLayout(null);

        //以下是在frame容器的基础上创建panel并设置参数
        Panel pan = new Panel();
        pan.setSize(100,100);
        pan.setBackground(Color.blue);

        fr.add(pan);//panel必须在一个容器中显示,通过add方法pan就成为了fr的一部分,性质可以由fr操控
        fr.setVisible(true);//此时是将pan的可见性仪器设置了
    }
}

成功显示!!!(其实我发现Color类中的大写和小写的颜色并没有什么区别。。。如果有当我没说,我是小白菜)

三.接触交互设计阶段——安装按键

package Frame;
import java.awt.*;

public class layout {
    public static void main(String[] args) {
        Frame frame = new Frame("laayoutmanage");//专门用于学习layout的框架
        //基本步骤:先设置frame的基本框架
        frame.setSize(300,300);
        frame.setBounds(100,100,400,300);//这是用来设置什么?
        frame.setLayout(new FlowLayout());//在frame中加入一个新的layout

        //创建按键
        Button but1 = new Button("按键1");
        Button but2 = new Button("按键2");
        Button but3 = new Button("按键3");
        Button but4 = new Button("按键4");
        Button but5 = new Button("按键5");

        //先创建独立的按键对象实例,此时并不属于frame框架中
        but1.setBackground(Color.white);
        but2.setBackground(Color.yellow);
        but3.setBackground(Color.orange);
        but4.setBackground(Color.magenta);
        but5.setBackground(Color.red);

        //接下来将创建的按键放入frame容器
        frame.add(but1);
        frame.add(but2);
        frame.add(but3);
        frame.add(but4);
        frame.add(but5);

        //一般最后都是将frame容器的可见性设置为可见
        frame.setVisible(true);
    }
}

显示效果如下(但是我并不知道为什么位置会默认的设置好了)

解答来了:FlowLayout的对齐方式默认为居中对齐,但是我们也可以自己指定对齐方式及横纵向间隔。

那么接下来就是自定义的布局参数了,如下,便将按键设置为了靠左的

四.按键的全局布局

package Frame;
import java.awt.*;

public class Border {
    public static void main(String[] args) {
        Frame frame = new Frame("newBorder");
        frame.setBounds(100,100,400,300);

        //创建按键,此时按键并不属于frame中
        Button but1 = new Button("button1");
        Button but2 = new Button("button2");
        Button but3 = new Button("button3");
        Button but4 = new Button("button4");
        Button but5 = new Button("button5");

        //设置各个按键的颜色
        but1.setBackground(Color.white);
        but2.setBackground(Color.yellow);
        but3.setBackground(Color.orange);
        but4.setBackground(Color.magenta);
        but5.setBackground(Color.red);

        //按键的位置是要在加入frame框架步骤的过程中进行进行设置
        frame.add(but1,BorderLayout.CENTER);//先将按键1放入frame中然后设置位置
        frame.add(but2,BorderLayout.EAST);
        frame.add(but3,BorderLayout.SOUTH);
        frame.add(but4,BorderLayout.WEST);
        frame.add(but5,BorderLayout.NORTH);

        frame.setVisible(true);
    }
}

显示效果如下:

值得注意的是:frame中元素的拉入是可以进行覆盖的,即将新加入的按键可以覆盖原来的按键的显示,同时图中的布局是东西南北中的默认位置和大小参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值