GUI图形化界面操作(上部)

目录

AWT

Frame对象:创建窗口

​编辑

该对象相关的属性

设置窗口大小(对象.setsize(int,int))

让窗口可以显现出来(对象.setVisible(bool))

设置窗口标题(对象.setTitle(String))

设置窗口颜色(对象.setBackground(颜色))

设置窗口始终展示在最前面(对象.setAlwaysOnTop(bool))

调整窗口位置(对象.setLocation(int,int))

设置窗口大小是否固定(对象.setResizable(false))

移入窗口中光标改变(个性化光标)//没啥用

监听器

定义:

监听器流程思路

使用监听器

监听对象:WindowListener(窗口)

监听对象:KeyListener(键盘)

监听对象:MouseListener(鼠标)

监听对象:MouseWheelListener(鼠标滚动)

事件

窗口常见事件

键盘常见事件

​编辑

e.getkeychar()//获取当前事件输入的字符

鼠标常见事件

常用组件

组件的介绍

常用组件

标签(lable)

相应属性

按钮(Button)

按钮的点击事件(对象.addActionListener(e->{}))

文本框(TextField)

对象.getText()函数获得文本框输入的内容

对象.setEchoChar('*')展示输入文本框样子

文本域(解决文本框无法换行问题)TextArea

勾选框(Checkbox )

​编辑

checkbox.getState()函数,返回bool值是否勾选,是true,不是false

单选框组(CheckboxGroup)

布局和面板

边界布局

​编辑

​编辑

流式布局FlowLayout

卡片布局

网格布局(GridLayout)

​编辑

面板与布局的嵌套使用

面板的概念

滚动面板和列表

滚动面板

列表

菜单栏

定义

​编辑

菜单栏的监听事件为

弹出菜单

对话框


Blue留言:

最近在学习一些知识,所以没时间去写文章,但为了保持创作的习惯,就将以前的笔记给转成文章了。

AWT

Frame对象:创建窗口

 Frame frame =new Frame();

frame是一个窗口,创建的对象,就直接成一个新的窗口(默认窗口是不可见的)

该对象相关的属性

设置窗口大小(对象.setsize(int,int))
frame.setSize(x1,x2);//利用setsize方法设定窗口大小

后面两个参数分别为x1:长和x2:宽,分别都是int形

让窗口可以显现出来(对象.setVisible(bool))
frame.setVisible(true);//这个功能是为了让窗口出现可见性,默认窗口是不可见的

注意:默认窗口是不可见的

设置窗口标题(对象.setTitle(String))
frame.setTitle("傻逼");

设置窗口颜色(对象.setBackground(颜色))
frame.setBackground(new Color(1,2,3));

参数有两种写法:

第一种写法:Color.(系统给你的颜色)

第二种写法:new Color()这里的参数就是ragb()写法

设置窗口始终展示在最前面(对象.setAlwaysOnTop(bool))
frame.setAlwaysOnTop(true);//设置窗口始终在前面
调整窗口位置(对象.setLocation(int,int))
frame.setLocation(500,300);//调整窗口的位置

默认位置:是在整个页面的左上角

调整前:

调整后:

设置窗口大小是否固定(对象.setResizable(false))
frame.setResizable(true);//设置窗口大小是否固定
移入窗口中光标改变(个性化光标)//没啥用
frame.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));

里面的参数得自己去查

监听器

定义:

处理窗口中发生的事件,比如移动鼠标,关闭窗口,鼠标点击等,当发生了这些事件时,然后要去做什么。

监听器流程思路

先使用监听器监听对象,也就是这些像窗口,键盘,鼠标之类的,然后监听到了后,使用适配器重写下面的事件,比如监听到了键盘,然后键盘这个对象有三个事件,分别为按下松开整个过程,按下,松开,然后你是想要那个事件,如果单独只要按下,那么就重写按下这个事件。

使用监听器

对象.add监听对象();
监听对象:WindowListener(窗口)
frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        frame.dispose();
    }

监听窗口,然后利用匿名内部类,重写WindowListener下面的各个事件的方法。这里使用了适配器(注意以Adapter结尾的都是适配器),也就是使用了一个类叫WindowAdapter,然后空重写实现WindowListener下面的方法,这样就可以直接重写WindowAdapter()下面某一个方法,不需要全部重写。

监听对象:KeyListener(键盘)
frame.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        super.keyPressed(e);
    }
});

同理

监听对象:MouseListener(鼠标)
frame.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent e) {
        super.mouseEntered(e);
    }
});
监听对象:MouseWheelListener(鼠标滚动)
frame.addMouseWheelListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        super.mouseClicked(e);
    }
});

事件

窗口常见事件

键盘常见事件

此图为适配器下的

e.getkeychar()//获取当前事件输入的字符

鼠标常见事件

常用组件

组件的介绍

组件实际就是awt提前预定好了的元素,如按钮,文本框,标签等。

常用组件

标签(lable)
Label label =new Label("我是标签");//添加标签只需要创建一个label对象就行
label.setLocation(20,50);//必须设置标签的位置与大小,否则无法展示出来
label.setSize(100,20);
frame.add(label);//使用add方法添加组件到窗口

注意:组件的位置是以窗口左上角的原点开始的,包括标题栏在内的,所以如果想要设置正常组件的位置,还得注意加上标签栏的高度,否则会被遮挡

相应属性

label.setBackgroud(Color.BLACK)//背景颜色

label.setForeground(Color.BLACK);//字体颜色

按钮(Button)
Button button=new Button("我是按钮");//添加按钮只需要创建一个Button对象就行
button.setBounds(20,50,100,50);//设置按钮的位置和大小,前两位参数为位置,后两位为大小
按钮的点击事件(对象.addActionListener(e->{}))
button.addActionListener(e -> {
    System.out.println("被点击");
});
文本框(TextField)
TextField field= new TextField();//TextField是一个文本框
field.setBounds(20,50,100,25);
frame.add(field);
对象.getText()函数获得文本框输入的内容
button.setBounds(20,100,100,50);
button.addActionListener(e -> {
   String sc= field.getText();
    System.out.println(sc);
});
frame.add(button);
对象.setEchoChar('*')展示输入文本框样子
field.setEchoChar('*');//展示输入文本框样子

未加此函数前:

加了此函数后:

文本域(解决文本框无法换行问题)TextArea
TextArea textArea=new TextArea();
textArea.setBounds(150,100,300,100);
frame.add(textArea);

对象.getText()函数获得文本框输入的内容

勾选框(Checkbox )
Checkbox checkbox =new Checkbox("记住密码");
checkbox.setBounds(20,50,100,50);
frame.add(checkbox);
checkbox.getState()函数,返回bool值是否勾选,是true,不是false
checkbox.getState()函数,返回bool值是否勾选,是true,不是false
单选框组(CheckboxGroup)
CheckboxGroup group=new CheckboxGroup();
Checkbox c1=new Checkbox("1");
c1.setBounds(60,60,60,60);
frame.add(c1);
Checkbox c2=new Checkbox("2");
c2.setBounds(60,100,60,60);
frame.add(c2);
c1.setCheckboxGroup(group);
c2.setCheckboxGroup(group);

将两个勾选框直接整上了联系,只能勾选上其中的一个,不能同时勾选。

使用如下函数可以获得checkbox里面的label也就是上面代码的‘1’or'2'

group.getSelectedCheckbox().getLabel();

布局和面板

边界布局

默然窗口采用的是边界布局,这种布局支持将组件放置五个区域

流式布局FlowLayout

FlowLayout()

构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素

  1. FlowLayout(int align)

构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素

五个参数值及含义如下:

0或FlowLayout.lEFT,控件左对齐

1或FlowLayout.CENTER,居中对齐

2或FlowLayout.RIGHT,右对齐

3或FlowLayout.LEADING,控件与容器方向开始边对应

4或FlowLayout.TRAILING,控件与容器方向结束边对应

如果是0、1、2、3、4之外的整数,则为左对齐

  1. FlowLayout(int align, int hgap, int vgap)

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

三、常用方法

void setAlignment(int align):设置此布局的对齐方式。

void setHgap(int hgap):设置组件之间以及组件与 Container 的边之间的水平间隙。

void setVgap(int vgap):设置组件之间以及组件与 Container 的边之间的垂直间隙

卡片布局

frame.setLayout(layout);
frame.add(new Button("1号按钮"));
frame.add(new Button("2号按钮"));
frame.setVisible(true);//这个功能是为了让窗口出现可见性,默认窗口是不可见的
while (true)
{
    Thread.sleep(3000);
    layout.next(frame);
​
}

网格布局(GridLayout)

面板与布局的嵌套使用

一般情况下只有窗口才能设置布局,为了让程序里面的布局多种多样,除了窗口外实际上还可以使用其他的容器,这里就要使用面板的概念

面板的概念

定义一个面板:

Panel panel =new Panel();

然后添加进窗口中

frame.add(panel);

面板也可以添加面板进去。

滚动面板和列表

滚动面板

ScrollPane scrollPane=new ScrollPane();//使用ScrollPane类定义

一个滚动面板里面只能放一个组件

注意在布局时,并没有规定一定要按照布局大小来展示组件,可以按照自己的想法去设置组件长宽高,使用

组件.setPreferredSize(new Dimension(长,宽))

的写法来自定义组件的长宽。

列表

滚动面板往往搭配的List列表(注意这里的列表不是我们集合类的列表,而是展示的列表组件)

List list=new List();//

如果想要多选的话可以给list设置值

list.setMultipleMode(true);//利用Ctrl加鼠标右键可以多选或者鼠标也行

列表的监听对象是:

list.addItemListenner(e->{})

利用list.getselectitem:可以获取已经被选择的item

菜单栏

定义

以上便是菜单栏

菜单栏下面有划分很多

 MenuBar menuBar=new MenuBar();
 Menu menu=new Menu("我是菜单");
 MenuItem item1=new MenuItem("1");
 MenuItem itemw=new MenuItem("2");
 menu.add(item1);
 menu.add(itemw);
 menuBar.add(menu);
frame.setMenuBar(menuBar);

MenuBar:整个菜单栏

Meanu:菜单栏上面的某个选项

Meanuitem:菜单栏下的某个选项点击后的某个选项(可以通过item.setShortcut(new MenuItem())设置快捷键)

注意:frame添加菜单栏的时候,使用frame.setMenuBar(menuBar);这个添加

菜单栏的监听事件为

item.addActionListener

弹出菜单

这便是弹出菜单

使用这个对象

PopupMenu menu=new PopupMenu();

在这个菜单栏里面添加选项

menu.add(new MenuItem("我是你的芭比"));
menu.add(new MenuItem("我是你的die比"));
menu.add(new MenuItem("我是你的father"));

加入到窗口里面

frame.add(menu);

设置监听对象,使得右键后菜单栏会弹出

frame.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getButton()==MouseEvent.BUTTON3)
        {
            menu.show(frame,e.getX(),e.getY());
        }
    }
});

对话框

对话框说白了就是一个小窗口

Dialog dialog = new Dialog(frame,"要退出吗?",true);//使用这个类创造对话框
参数分别为:
参数一:依附于那个窗口
参数二:标题
参数三:是否允许不去操作其他的东西,如果是,则只能点击对话框其他一律不能点

例子:

Dialog dialog = new Dialog(frame,"要退出吗?",true);
dialog.setBounds(300,200,200,100);
frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        dialog.setVisible(true);
    }
});

结语

感谢阅读

  • 103
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 62
    评论
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值