Java GUI编程

Posted 菜菜小谭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java GUI编程相关的知识,希望对你有一定的参考价值。

********************第16章 GUI编程 **************************

一.什么是GUI

GUI= Graphical User Interface 图形用户接口 图形用户界面


GUI是用java来编写带界面的应用程序


两套技术

1. AWT(Abstract Window Toolkit)

抽象窗口工具集


图形界面不是java本身实现的,其实是依赖于操作系统的底层函数

为了让同一个java程序运行在不同的操作系统上效果一致,所以

awt技术是抽取所有操作系统中共有的函数,这样既然是函数的交集

肯定功能比较单一


2. Swing


纯java实现的 由于本身不依赖于操作系统的底层函数 所以组件比较丰富


也可以跨平台

 

二.why


1. Awt 和Swing 虽然过时了,但是图形用户界面的编程思想并没有过时,我们学习

这一章主要学习GUI编程的思想,为以后学习android等打下一个基础

 

2. 为了做初级项目

 


*******************普通组件的继承关系图和常用方法******************

普通组件的常用方法

1. 设置位置


setLocation(int x,int y)


2. 设置大小


setSize(int width,int height)


3. 设置位置和大小


setBounds(int x,int y,int width,int height)


4. 设置组件的可见性


setVisible(boolean flag)


容器的常用方法


容器: 它是一个特殊的组件,可以放其他的组件


1. 往容器中添加组件

Component add(Component component)

...

 

**********************容器组件的继承关系图*************************

一.window(窗口)

顶级容器 可以独立使用

二.Panel(面板)

不是顶级容器 只能放在其他容器中使用(Window或Panel)

 

早期把java程序分为两大类:

1. application

2. applet 可以嵌入到网页中的java小程序

applet后来被flash技术打败了

 

**********************************Frame****************************************

顶级容器,可以独立使用

Frame代表常见的窗口,它是Window类的子类,具有如下几个特征:
1.Frame对象有标题,允许通过拖拉来改变窗口的位置、大小
2.初始化时为不可见,可用setVisible(true)使其显示出来
3.默认使用BorderLayout作为布局管理器(稍后再说)


package com.chapter16;

import java.awt.Frame;

public class TestFrame {

public static void main(String[] args) {

Frame frame = new Frame("我是标题");

frame.setLocation(50, 150);

frame.setSize(300, 200);

frame.setVisible(true);
}
}


**********************************Panel****************************************

不是顶级容器,不可以独立使用,必须放到其他容器中(例如Window或Panel)

 

1.可作为容器来盛装其他组件,为放置组件提供空间
2.不能单独存在,必须放到其他容器中
3.默认使用FlowLayout作为其布局管理器


演示代码:

package com.chapter16;

import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;

public class TestPanel {

public static void main(String[] args) {

Frame frame = new Frame("我是标题");

frame.setLocation(50, 150);

frame.setSize(250, 120);


//测试Panel

Panel panel = new Panel();

panel.add(new TextField(20));
panel.add(new Button("发送"));

//再把panel放到frame中
frame.add(panel);


frame.setVisible(true);
}
}

 

**********************************ScrollPane**************************************


带有滚动条的面板


把Panel 改成 ScrollPane 以后 单行文本框没了,原因是被按钮盖住了..


原因ScrollPane默认是BorderLayout 边框布局 如果添加的时候 没有指定添加元素的位置 默认添加到中间

两个组件都添加到中间 按钮就把单行文本框覆盖了


演示代码:


package com.chapter16;

import java.awt.Frame;
import java.awt.ScrollPane;
import java.awt.TextArea;

public class TestScrollPane {

public static void main(String[] args) {

Frame frame = new Frame("我是标题");

frame.setLocation(50, 150);

frame.setSize(250, 120);


//测试Panel


//ScrollPane.SCROLLBARS_AS_NEEDED 默认值 需要的时候再加滚动条
ScrollPane panel = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);

panel.add(new TextArea(5,20));
//panel.add(new Button("发送"));

//再把panel放到frame中
frame.add(panel);


frame.setVisible(true);
}
}


*******************************布局管理器**************************


一.为什么用布局管理器

使用了布局管理器以后,程序员就不需要主动调整控件的大小了, 由布局管理器帮你实现(相当于一个适配器)

要不然程序员一个一个调整组件的大小太麻烦了


二.如何设置容器的布局管理器

布局管理器类的对象
容器对象.setLayout(new XXXLayout());

 

三.常见的布局管理器(6种)


1. FlowLayout 流式布局


就像在txt或doc文档中打字一样,文字出现的顺序就是往流式布局 中添加的顺序


Panel 默认是流式布局

 

2. BorderLayout 边框布局


Frame 默认是边框布局的


类似4个人围桌 打麻将


如果想添加五个以上的组件,可以先把组件添加到Panel中,然后把Panel添加到 边框布局的容器中

 







































































































以上是关于Java GUI编程的主要内容,如果未能解决你的问题,请参考以下文章

结对编程项目

QT 编程,关于QTableWidgetItem的问题

Python-GUI编程-PyQt5

Java GUI编程

GUI编程Swing的简单应用

Atitit gui界面ui技术发展史与未来趋势