Java中swing,java swing菜鸟教程

Java中swing,java swing菜鸟教程,Java Swing最详细基础知识总结

本文主要介绍Java Swing最详细的基础知识的总结。文章中有非常详细的代码示例,对正在学习Java Swing的朋友很有帮助。有需要的可以参考一下。

一.导言Swing组件III的层次结构。Swing组件3.1 JFrame表单组件3.2 JDialog表单组件3.3 JLabel组件3.4文本字段3.5按钮IV。布局管理器4.1绝对布局4.2流动布局管理器4.3网格布局管理器4.4边界布局管理器

目录

Swing是一个为Java设计的GUI工具包。

Swing是JAVA基类的一部分。

Swing包括图形用户界面(GUI)设备,如文本框、按钮、分隔窗格和表格。

Swing提供了许多比AWT更好的屏幕显示元素。它们是用纯Java编写的,所以它们可以像Java本身一样跨平台运行,而不像AWT。他们是JFC的一部分。他们支持可替换的面板和主题(各种操作系统默认的唯一主题),但并没有真正使用原生平台提供的设备,只是在表面上模仿。这意味着您可以在任何平台上使用JAVA支持的任何面板。轻量级组件的缺点是执行速度慢,优点是可以在所有平台上采用统一的行为。

一、简介

从上图可以看出组件之间的继承关系。我们可以看到容器类下有四个子类。这四个子类中,除了JComponent类,其他三个都是Java AWT包中的类,JComponent是Java Swing出现的类。在设计Java Swing时,Sun使用JComponent从Java AWT过渡到Java Swing,这意味着Java Swing中的大部分容器和组件都继承了JComponent类。

除了JComponent类,其他三个容器类都是Java AWT中的容器。需要注意的是,容器分为顶层容器和中间容器。顶层容器是指图形界面最外层的容器,比如Window。中间容器是指存储在顶层容器或中间容器中的一种容器,如面板。在实际编程中,开发一个接口,应该是这样的:顶层容器在最外面(JFrame),其次是中间容器,放在表单上(JPanel),最后是基础组件放在中间容器上。这里需要注意的是,除了基本组件,容器还可以存放在容器中,如图所示:

我们经常使用的顶层容器是表单(JFrame)和对话框(JDialog),我们使用的中间容器是panel (JPanel)。开发中经常用到的大部分基本组件都是JComponent类的子类。

组件类的主要方法有:

(1) void enable():使组件可用。

(2) void disable():使组件不可用。

(3) void show():显示组件

(4) void paint():绘制图形

(5) void repaint():刷新

容器类的主要方法有:

(1) void add(组件c):将指定的组件添加到容器中。

(2) void setLayout():设置布局管理器。

的所有包含组件都可以继承或重载上述方法。

二、Swing 组件的层次结构

下表显示了常见的Swing组件:

组件名称

定义

JButton

摇摆按钮,可以配合一些图片或文字使用。

JCheckBox

表示Swing中的复选框组件。

JComBox

表示一个下拉列表框,它可以在下拉显示区域显示多个选项。

JFrame

表示一个Swing框架类。

JDialog

代表Swing版本的对话框

JLabel

表示Swing中的标签组件

JRadioButton

代表Swing的单选按钮

JList

表示可以在用户界面中显示一系列项的组件。

JTextField

代表性文本框

JPasswordField

表示密码框。

JTextArea

表示Swing中的文本区域

JOptionPane

表示Swing中的一些对话框

三、Swing组件

JFrame是一个独立于浏览器的主窗口,可以独立运行,通常用于开发桌面应用。/JFrame有边界和标题栏设置,大小可以调整。您需要向JFrame添加组件,或者您可以添加菜单或在其上绘图。

程序中JFrame的语法格式如下:

JFrame jf=new JFrame(标题);

container container=JF . getcontentpane();

JF:JF:JFrame类的一个对象

容器:容器类的对象可以通过用JFrame对象调用getContentPane()方法来获得。

我们应该有这样一个概念,Swing组件的表单通常与组件和容器相关,所以在创建JFrame对象后,我们需要调用getContentPane()方法将表单转换成容器,然后在容器中添加组件或设置布局管理器。通常,该容器用于包含和显示组件。如果需要向容器中添加一个组件,可以使用Cointainer类中的add()方法来设置它。例如:

Container.add(新的JButton(' button ');

让我们用Java代码做一个简单的表单如下:

包xmsj

导入Java . awt . color;

导入Java . awt . container;

导入javax . swing . jframe;

导入javax . swing . jlabel;

导入javax . swing . swing constants;

导入javax . swing . window constants;

公共类test1 {

公共静态void main(String[] args){

//创建一个表单对象

JFrame jf=new JFrame('这是JFrame窗体');

//获取一个容器来保存各种组件或布局管理器。

container container=JF . getcontentpane();

JLabel jl=new JLabel('这是JFrame表单');//创建一个JLabel标签

//将标签上的文本居中

JL . sethorizontal alignment(swing constants。中心);

//将标签添加到容器中

container . add(JL);

container . set background(color . white);//设置容器的背景颜色

//将窗体设置为可见

JF . set visible(true);

//设置表单大小

jf.setSize(200,150);

//设置窗体关闭模式。

JF . setdefaultcloseoperation(window constants。EXIT _ ON _ CLOSE);

}

}

如下图所示:

上面的程序展示了如何创建一个简单的表单,JFrame有其对应的方法,如下所示:

JFrame组件中提供了以下两种常见的构造方法:

(1)JFrame():创建一个没有窗口标题的窗口框架。

(2)JFrame(String):创建一个指定窗口标题的窗口框架。

JFrame的主要方法如下表所示:

方法

功能

addNotify()

创建对等框架。

处置()

清除窗口对象

getIconImage()

获取窗口的图标。

getMenuBar()

获取窗口的菜单栏。

getTitle()

获取窗口的标题。

paramString()

返回窗口的参数字符串。

isResizable()

如果窗口大小是可变的,则返回真值。

移除(菜单组件)

从窗口中删除指定的菜单栏

setIconImage(图像)

设置窗口的图标。

3.1 JFrame窗体组件

JDialog form是Swing组件中的一个对话框,继承了awt组件中的java.awt.Dialog类。

对话框(JDialog)类似于框架(JFrame),但一般是临时窗口,主要用于显示提示信息或接受用户输入。

因此,通常不需要改变对话框中的菜单栏和窗口大小。此外,当对话框出现时,您可以设置禁止其他窗口的输入,直到此对话框关闭。

在应用程序中创建JDialog表单需要实例化JDialog类,通常使用以下JDialog类的构造方法。

(1)public JDialog():创建一个没有标题和父窗体的对话框。

(2) public JDialog(Frame f):创建一个指定父窗体的对话框,但该窗体没有标题。

(3)公共JDialog(帧f,布尔模型):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。

(4)公共JDialog(帧f,字符串titl):创建一个指定标题的父窗体的对话框

(5)公共JDialog(帧f,字符串标题,布尔模型):创建一个指定标题、窗体和模式的对话框

下面我们用代码来实现:

包njci。软件。mynotepad 2018

导入Java。awt。容器;

导入javax。挥棒。jbutton

导入javax。挥棒。jdialog

导入javax。挥棒。jframe

导入javax。挥棒。jlabel

导入javax。挥棒。jpanel

导入javax。挥棒。jtextfield

公共类配置对话框扩展JDialog {

/**

*

*/

私有静态最终长串行版本uid=-713398359834685238 l;

公共配置对话框(JFrame框架){

超级(帧,'这是一个对话框,真);

//Container Container=getContentPane();//创建一个容器

//container.add(新JLabel('这是一个对话框'));//在容器中添加标签

//添加内部控件

JPanel pnl config=new JPanel();

pnlConfig.setLayout(空);

JLabel lblWidth=new JLabel('宽度');

JLabel lblHeight=new JLabel('高度');

final JTextField txt width=new JTextField();

final JTextField txt height=new JTextField();

JButton btnSave=new JButton('保存');

JButton btnCancel=新的JButton('取消');

//进行布局

lblWidth.setBounds(50,30,60,40);

txtWidth.setBounds(150,30,160,40);

lblHeight.setBounds(50,100,60,40);

txtHeight.setBounds(150,100,160,40);

btnSave.setBounds(50,160,100,40);

btnCancel.setBounds(200,160,100,40);

pnl配置加(LBL宽度);

pnl配置add(txt宽度);

pnl配置加(LBL身高);

pnl配置添加(txt高度);

pnl配置添加(BTN保存);

pnl配置添加(BTN取消);

这个。添加(pnl配置);

this.setSize(400,320);

这个。setresizable(false);//窗体大小不可改变

这个。setlocationrelativeto(帧);//居中显示

}

}

包爪哇翼

导入Java。awt。事件。动作事件;

导入Java。awt。事件。动作监听器;

导入javax。挥棒。jbutton

导入javax。挥棒。jframe

导入javax。挥棒。joptionpane

公共类我的框架扩展JFrame {

private static final long serial版本uid=4232937812480671357 l;

公共MyFrame(){

final JFrame frmMain=new JFrame('我的第一个记事本');

frmMain.setSize(400,300);

弗曼。setdefaultcloseoperation(DISPOSE _ ON _ CLOSE);

弗曼。setlocationrelativeto(null);//居中显示

弗曼。设置可见(真);

config dialog dlgConfig=新的配置对话框(frmMain);

DLG配置。设置可见(真);

}

/**

*

*/

公共静态void main(String[] args){

新建我的相框();

}

}

运行效果如下所示:

3.2 JDialog窗体组件

在摇摆中显示文本或提示信息的方法是使用标题,它支持文本字符串和图标。在应用程序的用户界面中,一个简短的文本标签可以使用户知道这些组件的目的,所以标签在摇摆中是比较常用的组件。

标签由JLabel类定义,它的父类为JComponent类。

JLabel组件显示的是静态文本或者图片,在通常情况下是不能编辑的,只起到提示的作用。观察即时通信软件登录界面输入框左侧的头像,他就可以用JLabel组件实现。

JLabel组件中主要的构造方法如下:

(1)JLabel():创建空的标签。

(2)JLabel(字符串):创建一个带初始字符串的标签。

(3)JLabel(图标):创建一个带有指定图像的标签。

JLabel的主要方法见下表所示:

方法

功能

文字排版(字符串)

设置显示内容

getText()

获取显示内容

getAlignment()

获取对齐方式

setAlignment()

设置对齐尖牙

3.3 JLabel组件

文本域一般用来让用户输入姓名、信用卡号这样的信息,它是一个能够接收用户的键盘输入的小块区域。

在创建文本域时,参数类型有四种:空的、空的并且具有指定长度、带有初始文本内容和带有初始文本内容并具有指定长度的。

正文的主要方法如下:

方法

功能

getColumns()

返回文本字段中的列数。

getEchoChar()

返回用于回显的字符。

setEchoCharacter(字符)

设置文本字段的回显字符。

setEditable(布尔值)

设置文本字段是否为只读。

setText(字符串)

在文本字段中设置文本值。

getText()

返回文本字段中的输入文本值。

3.4 文本域

几乎所有的交互程序中都有按钮。是一种交互能力强,交互方便的控件。该组件提供了“按下并动作”的基本用户界面。

施工方法如下:

(1): jbutton():创建一个没有标签字符串的新按钮类对象。

(2): JButton (String label):用标签字符串创建一个新的Button类对象。

实现了以下代码:

包javaswing

导入Java . awt . event . action event;

导入Java . awt . event . action listener;

导入javax . swing . jbutton;

导入javax . swing . jframe;

导入javax . swing . joptionpane;

公共类MyFrame扩展JFrame {

private static final long serial version uid=4232937812480671357 l;

公共MyFrame(){

Final JFrame frmMain=new JFrame('我的第一个记事本');

frmMain.setSize(400,300);

frmmain . setdefaultcloseoperation(DISPOSE _ ON _ CLOSE);

frmmain . setlocationrelativeto(null);//居中显示

frmmain . set visible(true);

//为按钮添加独立事件

JButton jbn=new JButton('系统配置');

frmmain . add(jbn);

}

/**

*

*/

公共静态void main(String[] args){

new my frame();

}

}

运行效果如下:

3.5 按钮

在Swing中,每个组件在容器中都有特定的位置和大小,但是很难判断各个组件在容器中的具体位置和大小。布局管理器提供了排列Swing组件、在容器中显示它们的方法以及基本的布局功能。使用布局管理器比程序员直接控制Swing组件在容器中的位置和大小要方便得多,而且可以有效地处理整个表单的布局。Swing提供的常见布局管理器包括流程布局管理器、边界布局管理器和网格布局管理器。本节将讨论Swing中常用的布局管理器。

四.布局管理器

在Swing中,除了布局管理器之外,还可以使用绝对布局。绝对布局是指定组件在容器中的位置和大小。您可以使用绝对坐标来指定元件的位置。

(1)使用Container.setLayout(null)方法取消布局管理器。

(2)使用Component.setBounds()方法设置每个组件的大小和位置。

让我们用下面的代码实现绝对布局:

包javaswing

导入javax . swing . jbutton;

导入javax . swing . jdialog;

导入javax . swing . jframe;

导入javax . swing . jlabel;

导入javax . swing . jpanel;

导入javax . swing . jtextfield;

公共类ConfigDialog扩展JDialog {

/**

*

*/

private static final long serial version uid=-713398359834685238 l;

公共配置对话框(JFrame框架){

超级(框架,'这是一个对话框',真);

//Container Container=getContentPane();//创建一个容器

//container.add(new JLabel('这是对话框'));//向容器添加标签

//添加内部控件

JPanel pnl config=new JPanel();

pnlConfig.setLayout(空);

jlabelbl width=new jlabel(' width ');

JLabel LBL height=new JLabel(' height ');

final JTextField txt width=new JTextField();

final JTextField txt height=new JTextField();

JButton BTN save=new JButton(' save ');

JButton BTN cancel=new JButton(' cancel ');

//进行绝对布局

lblWidth.setBounds(50,30,60,40);

txtWidth.setBounds(150,30,160,40);

lblHeight.setBounds(50,100,60,40);

txtHeight.setBounds(150,100,160,40);

btnSave.setBounds(50,160,100,40);

btnCancel.setBounds(200,160,100,40);

pnl config . add(LBL width);

pnl config . add(txt width);

pnl config . add(LBL height);

pnl config . add(txt height);

pnl config . add(BTN save);

pnl config . add(BTN cancel);

this . add(pnl config);

this.setSize(400,320);

this . setresizable(false);//不能更改窗体大小。

this . setlocationrelativeto(frame);//居中显示

}

公共静态void main(String[] args) {

//new config dialog(frame);

}

}

4.1 绝对布局

流管理器是最基本的布局管理器。顾名思义,整个容器中的布局像“流”一样从左到右放置组件,直到占据这一行的所有空间,然后向下移动一行。默认情况下,组件排列在每一行的中间,但是每一行中组件的排列位置也可以通过设置来更改。

FlowLayout布局管理器是最简单的布局管理方法,也是JPanel的默认布局。它将组件从左到右、从上到下以流的方式放置在容器中,即每一行从左到右放置组件,当一行放不下时换行。Wlayout的默认对齐方式是居中对齐,也可以手动设置为左对齐或右对齐。

WLayout中常见的构造方法:

(1)FlowLayout():创建默认的FlowLayout管理器。

(2)FlowLayout(int):用指定的对齐方式创建一个FlowLayout管理器。参数:

流程布局。左侧(左对齐),流程布局。右(右对齐),流程布局。居中(居中对齐)。

(3)FlowLayout(int,int,int);使用指定的对齐方式和间距创建FlowLayout管理器。其中,第一个参数是对齐,第二个参数是组件之间以及组件与容器边缘之间的水平距离,第三个参数是组件之间以及组件与容器边缘之间的垂直距离。

WLayout的主要方法如下表所示:

方法

功能

getAlignment()

返回对齐

getHgap()

返回组件水平间距或组件列间距。

getVgap()

返回组件垂直间距或组件行间距。

setAlignment

设置对齐方式

setHgap()

设置组件列间距

setVgap()

设置行距

下面的代码实现了FlowLayout的用法:

包javaswing

导入Java . awt . container;

导入Java . awt . flow layout;

导入javax . swing . jbutton;

导入javax . swing . jframe;

导入javax . swing . jlabel;

导入javax . swing . jpanel;

导入javax . swing . window constants;

公共类FlowLayoutDemo扩展JFrame{

公共FlowLayoutDemo(){

SetTitle('此表单使用流布局管理器');//设置表单标题

容器c=getContentPane();

//将表单设置为使用流布局管理器,将组件右对齐,并设置组件之间的水平和垂直间距。

setLayout(新的FlowLayout(2,10,10));

for(int I=0;i10i ){

C.add(新的JButton(' button ' I));

}

setSize(300,200);

set visible(true);

setDefaultCloseOperation(window constants。EXIT _ ON _ CLOSE);

}

公共静态void main(String[] args){

new FlowLayoutDemo();

}

}

运行效果如下图所示:

4.2 流布局管理器

GridLayout布局管理器将容器区域分为M行M列,即大小相等的网格,容器中的组件被放置在这些网格中,占据一个大小完全相同的网格。

GridLayout创建如下:

(1)GridLayout():创建默认的GridLayout,所有组件都显示在一行中。

(2)GridLayout(int,int)根据指定的行数和列数创建GridLayout。

(3)Gridlayout(int,int,int)根据指定的行数、列数、行间距和列间距创建Gridlayout。

GridLayout的主要方法如下表所示:

方法

功能

getHgap()

返回组件的水平间距。

getVgap()

返回组件的垂直间距。

setHgap()

设置组件的水平间距。

setVgap()

设置组件垂直间距。

getRows()

获取网格中的行数。

getColumns()

获取网格中的列数。

setRows()

设置网格中的行数。

setColumns()

设置网格中的列数。

向网格中添加组件有两种方式:一种是默认顺序,即从左到右、从上到下;另一种是表示加入时的网格位置。

具体代码实现如下:

包javaswing

导入Java . awt . container;

导入Java . awt . gridlayout;

导入javax . swing . jbutton;

导入javax . swing . jframe;

导入javax . swing . window constants;

公共类GridLayoutPosition扩展JFrame{

public GridLayoutPosition(){

容器c=getContentPane();

//设置容器使用网络布局管理器,设置一个7行3列的网格,行间距5,列间距5。

setLayout(new GridLayout(7,3,5,5));

for(int I=0;i20i ){

C.add(新的JButton(' button ' I));//循环添加按钮

}

setSize(300,300);

SetTitle('这是一个使用网格布局管理器的窗体');

set visible(true);

setDefaultCloseOperation(window constants。EXIT _ ON _ CLOSE);

}

公共静态void main(String[] args){

new GridLayoutPosition();

}

}

运行效果如下:

4.3 网格布局管理器

当默认不指定表单布局时,Swing组件的布局模式是边界布局管理器,可以将容器划分为东、南、西、北、中五个区域,并在这五个区域添加组件。当容器调用容器类的add()方法添加一个组件时,它可以在边界布局管理器中设置这个组件的区域。区域的控制可以由BorderLayout类中的成员变量决定。这些成员变量的具体含义如下表所示:

成员变量

意义

BorderLayout。北方

当您将组件添加到容器中时,该组件被放置在顶部。

BorderLayout。南方

当您将组件添加到容器中时,该组件被放置在底部。

BorderLayout。东方

当您将组件添加到容器中时,该组件被放置在右端。

BorderLayout。西方的

向容器中添加组件时,组件被放置在左端。

BorderLayout。中心

向容器中添加组件时,该组件被放置在中间并开始填充,直到它与其他组件边界连接。

以下代码用于实现:

包javaswing

导入Java . awt . borderlayout;

导入Java . awt . container;

导入javax . swing . jbutton;

导入javax . swing . jframe;

导入javax . swing . window constants;

公共类BorderLayoutPosition扩展JFrame{

//定义组件放置位置的数组

String[] border={BorderLayout。居中,边框布局。北方,边境布局。南方,边境布局。西边,边界布局。东};

String[] buttonName={ '中按钮','北按钮','南按钮','西按钮','东按钮' };

public BorderLayoutPosition(){

SetTitle('此表单使用边界布局管理器');

容器c=getContentPane();//定义一个容器

set layout(new BorderLayout());//将容器设置为边界布局管理器

for(int I=0;iborder.lengthi ){

//在容器中添加按钮并设置按钮布局

c.add(border[i],new JButton(button name[I]);

}

setSize(350,250);//设置表单大小

set visible(true);//将窗体设置为可见

//设置窗体关闭模式。

setDefaultCloseOperation(window constants。DISPOSE _ ON _ CLOSE);

}

公共静态void main(String[] args){

new BorderLayoutPosition();

}

}

实现效果如下图所示:

这篇关于Java Swing基础知识的最详细的总结就到此为止。更多Java Swing知识的相关总结,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: