图形化界面1

package Demo1;
import java.awt.*;
public class Demo1 {
    public static void main(String[] args) {
        //创建一个窗口对象
        Frame frame = new Frame("这里测试windows窗口");
        //指定窗口位置,大小
        frame.setLocation(100,100);
        frame.setSize(500,300);
        //色值窗口可见
        frame.setVisible(true);
    }
}
package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
        //1.创建一个wimdows对象,因为panel及其其他容器都不能独立存在,必须依附于Windows对象存在
        Frame frame = new Frame("这里panel");
//2.创建一个panel对象
        Panel p = new Panel();
    //3.创建一个文本框和一个按钮,把他们放入到panel容器中
        p.add(new TextField("这里是一个测试文本" ));
      p.add(new Button("这里是一个测试按钮"));
        //4.把panel放入到window中
        frame.add(p);
        //5.设置窗口位置和大小
        frame.setBounds(100,100,500,300);
        //设置window可见
        frame.setVisible(true);
       }
}
package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
        Frame frame = new Frame("这里样式ScrollPane");
        ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);
        sp.add(new TextField("this is test text"));
        sp.add(new Button("this is test button"));
        frame.add(sp);
        frame.setBounds(100,100,300,500);
        frame.setVisible(true);
       }
}

Flowlayout

在flowlayout布局管理器中,组建就像流水一样向着某方向流动,遇到障碍便捷就会折回,从头开始排列,在默认情况写,flowlayout布局管理器从左现有排列所有组建,遇到边界就会折回下一行重新排列

构造方法
flowLayout()使用默认和对齐方式及默认的垂直间距,水平间距创建flowlayout布局管理器
flowlayout(int align)使用指定的对齐方式及其默认的垂直间距,水平间距创建flowlayout布局管理器
flowlayout(int align,inthgap,int vgap)使用指定的对齐方式及指定的垂直间距,水平间距创建flowlayout布局管理器
package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
   Frame frame = new Frame("这里测试flowlayout");
    //1.通过setlayout方法设置容器的布局管理器
        frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));
        //2.添加多个按钮到frame中
        for (int i = 1; i <=100;i++) {
            frame.add(new Button("button"+i));
        }
        //设置最佳大小,pack方法
        frame.pack();
        frame.setVisible(true);
    }
}

BorderLayout

BorderLayout将容器分为east,south,west,north,center五个区域,普通组建可以被放置在这个5个区域中的任意一个

当改变使用borderlayout的容器大小时,north,south和center区域水平调整,east,west和center区域垂直调整,使用borderlayout布局有如下两个注意点

  1. 当使用borderlayout布局管理器的容器添加组件时,需要指定要添加到哪一个区域红,如果没有指定添加到哪一个区域中,则默认添加到中间区域
  2. 如果向同一个区域总添加多个组件时,后放入的组件会覆盖先放的组件
构造方法
borderlayout()使用默认的水平间距,垂直间距
borderlayout(int hgap,int vgap)指定
package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
   Frame frame = new Frame("这里测试Boderlayout");
   //1.给frame设置boderlayout管理器
        frame.setLayout(new BorderLayout(30,30));
        //2.往frame的之间区域添加组件
        frame.add(new Button("north"),BorderLayout.NORTH);
        frame.add(new Button("south"),BorderLayout.SOUTH);
        frame.add(new Button("east"),BorderLayout.EAST);
        frame.add(new Button("west"),BorderLayout.WEST);
        frame.add(new Button("center"),BorderLayout.CENTER);
    frame.pack();
    frame.setVisible(true);
    }
}
  • 注意

如果不往某个区域中放入组件,那么该区域不会被空白出来,而是会被其他区域占用(center)

package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
   Frame frame = new Frame("这里测试Boderlayout");
   //1.给frame设置boderlayout管理器
        frame.setLayout(new BorderLayout(30,30));
        //2.往frame的之间区域添加组件
        frame.add(new Button("north"),BorderLayout.NORTH);
        frame.add(new Button("south"),BorderLayout.SOUTH);
//        frame.add(new Button("east"),BorderLayout.EAST);
//        frame.add(new Button("west"),BorderLayout.WEST);
        frame.add(new Button("center"),BorderLayout.CENTER);
    Panel p = new Panel();
    p.add(new Button("center Button"));
    p.add(new TextField("test text"));
    frame.add(p);
    frame.pack();
    frame.setVisible(true);
    }
}

GridLayout

GridLayout布局管理器将容器分割成纵横线分隔的网格,每个网格所占用的区域大小相同,当向使用gridlayout布局管理器中添加组件时,默认从左向右,从上往下依次添加到每个网格中,与FlowLayout不同的是,放置在gridlayout布局管理器中的个组件的大小由组件所处的区域决定(每个组件将自动占满整个区域)

构造方法方法功能
GridLayout(int rows,int cols)采用指定的行数,列数,以及默认的间距
GridLayout(int rows ,int cols,int hgap,int vgap)指定行数数,列数,纵横间距
package Demo1;

import java.awt.*;

public class Demo2 {
    public static void main(String[] args) {
   Frame frame = new Frame("计算器");
   //1.创建一个panel对象,里面存放一个textFiled组件
  Panel p = new Panel();
  p.add(new TextField(30));
  //2.把当前panel添加到frame的北边区域
        frame.add(p,BorderLayout.NORTH);
        //3.创建一个panel对象,并且设置他的布局管理为Gridlayout
        Panel p2 = new Panel();
        p2.setLayout(new GridLayout(3,3,4,4));
        for (int i = 0; i < 10; i++) {
            p2.add(new Button(i+""));
        }
        p2.add(new Button("+"));
        p2.add(new Button("-"));
        p2.add(new Button("*"));
        p2.add(new Button("/"));
        //5.把当前panel添加到frame中
        frame.add(p2);
    frame.pack();
    frame.setVisible(true);
    }
}

CardLayout

CardLayout布局管理器以时间而非空间来管理它里面的组件,他可以将容器里面所有组件看成一叠卡片(每个卡片其实就是一个组件),每次只有最上面的那个component才可见,就好像一副扑克牌,他们叠在一起,每次只有最上面的一副扑克牌才可见

方法名称方法功能
CardLayout()创建默认CardLyout布局管理器
CardLayout(int hgap,int vgap)通过指定卡片与容器左右边的间距(hgap),上下边距 (vgap)的间距来创建cardlayout布局管理器
first(Container target)显示target容器中第一张卡片
last(Container target)显示target容器中最后一张卡片
previous(Container target)显示target容器中前一张卡片
next(Container target)显示target容器中后一张卡片
show(Container tagrget ,String name)显示target容器中指定名字卡片
package Demo1;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.nio.charset.UnmappableCharacterException;

public class Demo3 {
    public static void main(String[] args) {


        Frame frame = new Frame("这里测试cardlayout");
        //1.创建一个panel,用来存储多个卡片
        Panel p1 = new Panel();
        //2.创建Cardlayout对象,并且把该对象设置给之前创建的容器
        CardLayout cardLayout = new CardLayout();
        p1.setLayout(cardLayout);
        //3.往panel中存储多个组件
String[] names ={"A","B","C","D","E"};
        for (int i = 0; i <names.length; i++) {
p1.add(names[i],new Button(names[i]));
        }
        //4.把panel放到frame的中间区域
        frame.add(p1);
        //5. 创建另外一个panel,p2,用来存储多个按钮组件
Panel p2 = new Panel();
        //6.创建5个按钮组件
Button b1 = new Button("privious");
Button b2 = new Button("next");
Button b3 = new Button("first");
Button b4 = new Button("last");
Button b5 = new Button("third");
        //7.创建一个事件监听器,监听按钮的点击动作
        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = e.getActionCommand();//这个字符就是按钮上的文字
            switch (actionCommand){
                case"privious":
                    cardLayout.previous(p1);
                 break;
                case"next":
                    cardLayout.next(p1);
                   break;
                 case"first":
                     cardLayout.first(p1);
                    break;
                case"last":
                    cardLayout.last(p1);
                    break;
                case "third":
                    cardLayout.show(p1,"C");
                    break;
            }
            }
        };
        //8.把当前这个事件监听器和多个按钮绑定到一起
b1.addActionListener(listener);
b2.addActionListener(listener);
b3.addActionListener(listener);
b4.addActionListener(listener);
b5.addActionListener(listener);
        //9.把按钮添加到容器p2中
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
        //10。把p2放在frame的南边区域
        frame.add(p2,BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    }
}

Boxlayout

为了简化开发,Swing引入了一个新的布局管理器,Boxlayout,BoxLayout可以在垂直和水平两个方向上摆放Gui组件,Boxlayout提供了如下一个简单的构造器

方法名功能
Boxlayout(Container target,int axis)指定创建基于target容器的Boxlayout布局管理器,该布局管理器匿名的组件按照axis方向排列,其中axis有Boxlayout.x_AXIS(横向)和Boxlayout.y_AXIS(纵向)两个方向
package Demo1;

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

public class Demo4 {
    public static void main(String[] args){
        Frame frame = new Frame();
        //1.基于frame,创建一个boxlayout对象,并且垂直放置
        BoxLayout boxlayout = new BoxLayout(frame,BoxLayout.X_AXIS);
        //2.把Boxlayout设置给Frame
        frame.setLayout(boxlayout);
        //3.往frame中添加两个组件
        frame.add(new Button("button1"));
        frame.add(new Button("button2"));
        frame.pack();
        frame.setVisible(true);
    }
}
  • 在java.swing中,提供了一个新的容器Box,该容器的默认布局管理器就是Boxlayout,大多数情况下,使用box容器去容纳多个gui组件,然后再把box容器作为一个组件,添加到其他容器中,从而形成整体窗口布局
名称功能
static Box createHorizontallBox()创建一个水平排列的Box容器
static Box creatVertivalBox()创建一个锤子排列的Box容器
package Demo1;

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

public class Demo5 {
    public static void main(String[] args) {
        Frame frame = new Frame("test");
        //1.创建一个水平排列的box容器
      Box b1 = Box.createHorizontalBox();
        //2.往容器里面添加两个按钮
  b1.add(new Button("button1"));
  b1.add(new Button("button2"));
  //3.创建一个垂直排列的容器
       Box b2 = Box.createVerticalBox();
        //4.往容器里面添加两个按钮
        b2.add(new Button("buttonA"));
        b2.add(new Button("buttonB"));
        //5.吧Box放入frame中
        frame.add(b1,BorderLayout.SOUTH);
        frame.add(b2,BorderLayout.NORTH);
frame.pack();
frame.setVisible(true);
    }
}

AWT中常用组件

https://blog.csdn.net/ruan_luqingnian/article/details/113512657
awt事件处理机制

定义:

在当某个组件上发生某个操作时,会自动的触发执行一些代码

  • 事件源
  • 事件
  • 事件监听器
  • 注册监听
package Demo1;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo7 {
    Frame frame =new Frame("test");
    TextField tf = new TextField("30");
    Button ok = new Button("ok");
    public void init(){
        //组装视图
        //监听视图
//        MyLister myLister = new MyLister();
        //注册监听
        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tf.setText("hello pofen");
            }
        });
        //把tf和ok放入frame
        frame.add(tf,BorderLayout.NORTH);
        frame.add(ok,BorderLayout.SOUTH);
        frame.pack();
frame.setVisible(true);
    }
//    private class MyLister implements  ActionListener{
//
//        @Override
//        public void actionPerformed(ActionEvent e) {
//            tf.setText("hello pofen");
//        }
//    }

    public static void main(String[] args) {
        new Demo7().init();
    }
}

#GUI中常见的事件和事件监听器

https://blog.csdn.net/ruan_luqingnian/article/details/113555872?ops_request版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ruan_luqingnian/article/details/113555872

Swing

Swing是由100%java实现的,不在依赖本地平台的GUI

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pofenx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值