Java学习笔记之Swing.docx

上传人:b****8 文档编号:10962669 上传时间:2023-02-24 格式:DOCX 页数:28 大小:1.87MB
下载 相关 举报
Java学习笔记之Swing.docx_第1页
第1页 / 共28页
Java学习笔记之Swing.docx_第2页
第2页 / 共28页
Java学习笔记之Swing.docx_第3页
第3页 / 共28页
Java学习笔记之Swing.docx_第4页
第4页 / 共28页
Java学习笔记之Swing.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Java学习笔记之Swing.docx

《Java学习笔记之Swing.docx》由会员分享,可在线阅读,更多相关《Java学习笔记之Swing.docx(28页珍藏版)》请在冰豆网上搜索。

Java学习笔记之Swing.docx

Java学习笔记之Swing

1.AWT—AbstractWindowingToolkit抽象窗口工具包

是Java用来建立和设置Java图形用户的基本工具。

2.现在基本上不用awt,而用Swing

3.JFrame框架窗体既是一个组件,也是一个容纳其他组件的容器。

在开发图形化程序时,需要先创建这个容器,然后把其他组件加进去,就可以进行显示了。

我们在创建form的时间,一定要加上这句话:

frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

否则窗体将关不掉。

WindowConstants接口后面有四个属性:

属性名

说明

EXIT_ON_CLOSE

关闭窗口并退出程序

DISPOSE_ON_CLOSE

关闭并销毁当前窗口,但不退出程序

DO_NOTHING_ON_CLOSE

点关闭按钮不做任何操作(默认是它)

HIDE_ON_CLOSE

隐藏但不销毁当前窗体

4.JFrameframe=newJFrame("第一个窗体");

通过这样创建窗体是不可见的,需要加入一句显示窗体的语句:

frame.setVisible(true);

JFrame的方法:

方法名

说明

frame.getContentPane()

获得窗体对象的容器

Frame.setIconImage(img)

设置窗体标题栏上显示的图标

Frame.setJMenuBar(menuBar)

设置窗体的菜单栏

Frame.setTitle

设置窗体的标题

Frame.setResizable(false)

设置窗体是否可以改变大小,false为不允许

Frame.setBounds(intx,inty,intwidth,intheight)

X和y指定左上角的位置,width和height指定窗体大小

Frame.setVisible(true)

设置窗体的可见性

Frame.validate()

使窗体容器及其所有子组件生效

Frame.setLocation(intx,inty)

设置窗体的显示位置

Frame.setSize(intwidth,intheight)

调整窗体的大小

上面是通过父类,调用了父类的构造函数创建了一个frame

上面这个是没有继承父类,通过自身创建了frame,易于理解。

packageaaa;

importjava.awt.Container;

importjavax.swing.*;

publicclassForm

{

JFrameframe;//在类中定义,易于被其他方法调用

Containercont;//在类中定义,易于被其他方法调用

publicForm(Stringname)//这里是最基本的东西,在创建对象实例form的时候,就自动调用这个构造函数创建了frame

{//这里的东西可以以后一点都不改动,要操作到其他方法中操作。

frame=newJFrame();

frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

frame.setTitle(name);//调用父类的方法

frame.setVisible(true);

frame.setBounds(100,100,400,400);

cont=frame.getContentPane();

//容器是有frame延伸出来的,本来就属于frame

}

publicvoidadd()//这个方法我们定义用于加入组件,和frame的创建分开出来,有好处

{

JLabellabel=newJLabel("label");

cont.add(label);

}

publicstaticvoidmain(String[]argv)

{

Formform=newForm("第一个窗体");

form.add();

}

}

5.窗体frame是最基本的,在里面就可以加入组件。

6.JDialog对话框窗体:

该类即使一个组件,同时也是一个容纳其他组件的容器,它是一个对话框窗体,也是窗体,就也可以容纳东西。

对话框窗体和窗体的设置一模一样。

JDialogdialog;

Containercontdialog;

dialog=newJDialog(frame,"titleofdialog");

//这里指定对话框窗体依附于窗体frame

contdialog=dialog.getContentPane();

dialog.setVisible(true);

dialog.setBounds(10,10,100,100);

dialog.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

对话框窗体不能最大化和最小化,同时,它必须依附JFrame而存在,就是说,如果frame被关闭了,它也就被关闭了。

dialog=newJDialog(frame,"titleofdialog",true);

第三个参数为模态参数,如果设为true,那么如果没有关闭dialog窗体就无法操作frame窗口。

7.窗体的布局。

7.1null绝对布局

绝对布局就是将指定的组件放置在容器中的绝对位置,每一个组件的具体位置我们自己固定设定。

7.2FlowLayout流布局

流布局为向容器中从左到右依次按程序加入组件,如果一行放不下,就放两行,如果两行不行,就再往下,依次类推。

FlowLayoutflowlay=newFlowLayout(FlowLayout.CENTER,30,10);

contframe.setLayout(flowlay);

上面的第一个参数是用于设定对齐的方式,有很多属性,CENTER代表居中。

对齐字段说明:

字段名

说明

CENTER

每一行组件都应该是居中的

LEADING

每一行组件都应该与容器方向的开始边对齐

LEFT

指示每一行组件都应该左对齐

RIGHT

指示每一行组件都应该是右对齐

TRAILING

指示每一行都应该与容器方向的结束边对齐

第二个参数是表示每两个组件间水平方向的间隔像素,默认都是5.

第三参数是表示上下两行的间隔像素,默认都是5

我们在调整窗体大小的时候,组件也能实现自动调整。

7.3BorderLayout边界布局

设置为边界布局的容器中,容器被认为东、西、南、北、中5个区域,并且每个区域只能放在一个组件,如果某个区域需要放在多个组件,可以先将这些组件放在比如一个面板上,然后把面板再放到这个区域里面。

容器窗体的默认布局是边界布局。

一开始可以不要,因为默认就是这个布局。

前者是:

BorderLayoutborderlay=newBorderLayout(10,10);

后者是没有参数的,没有参数默认为0.就是意味着水平垂直都没有间隔。

7.4GridLayout网格布局

网格布局就是分成若干行和列,分成若干个相等的矩形,每一个矩形放在一个组件。

7.4CardLayout卡片布局

将容器中每个组件都看做是一个卡片,在卡片布局的容器中每次只能显示一张卡片,门卡片的顺序就是添加的顺序,每一个添加的组件是一张卡片。

常用方法:

方法名

说明

Voidfirst(Container)

在容易中显示第一张卡片

Voidlast(Container)

在容器中显示最后一张卡片

Voidnext(Container)

在容器中显示下一张卡片

Voidprevious(Container)

在容器中显示上一张卡片

Voidshow(Container,Stringname)

在容器中显示具有指定名称的卡片

packageaaa;

importjava.awt.Container;

importjava.awt.*;//设置布局要导入这个包

importjavax.swing.*;

publicclassForm

{

JFrameframe;//在类中定义,易于被其他方法调用

Containercontframe;//在类中定义,易于被其他方法调用

CardLayoutcardlay;//新建布局

publicForm(Stringname)//这里是最基本的东西,在创建对象实例form的时候,就自动调用这个构造函数创建了frame

{//这里的东西可以以后一点都不改动,要操作到其他方法中操作。

frame=newJFrame();

frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

frame.setTitle(name);//调用父类的方法

frame.setVisible(true);

frame.setBounds(10,10,400,400);

contframe=frame.getContentPane();

//容器是有frame延伸出来的,本来就属于frame

cardlay=newCardLayout();//实例化布局

contframe.setLayout(cardlay);//设定布局

}

publicvoidadd()//这个方法我们定义用于加入组件,和frame的创建分开出来,有好处

{

JButtonbtn1=newJButton("button1");

JButtonbtn2=newJButton("button2");

JButtonbtn3=newJButton("button3");

JTextFieldtext=newJTextField("textfield");

JLabellabel=newJLabel("lable");

JRadioButtonradio=newJRadioButton("radio");

JCheckBoxche=newJCheckBox("checkbox");

contframe.add(btn1);

contframe.add(btn2);

contframe.add(btn3);

contframe.add(label);

contframe.add(text);

contframe.add(radio);

contframe.add(che);

cardlay.first(contframe);//显示第一个卡片

}

publicstaticvoidmain(String[]argv)

{

Formform=newForm("第一个窗体");

form.add();

}

}

8.JPanel面板

JPanel也是一种容器,JPanel类在javax.swing包中,JPanel也可以设置各种布局,然后可以直接加组件,然后再把这个JPanel加入到frame的container中就可以了。

9.JScrollPane滚动窗格

有些时候,组件比较多,需要加入滚动条,也有比如文本域,在文字过多的时候,需要加入滚动条。

在Java中,通过JScrollPane滚动窗格使文本域能够产生滚动条。

有一个方法:

setViewportView(组件名)

用于设定到底是为什么加入滚动条

从中我们可以看出,我们不需要把文本域加入到容器中,因为文本域已经绑定到了滚动窗格中。

如上面所示,我们可以把面板当做以组件放在scrollpan中

10.常用组件

10.1图标Icon

可以通过ImageIcon类来创建图标

图标有三个方法

1)IntgetIconHeight()获得图标高度

2)IntgetIconWidth()获得图标宽度

3)VoidpaintIcon(container,Graphicsg,intx,inty)在指定位置上绘制图标

10.2图像图标ImageIcon

URLurl=Form.class.getResource("/image/picture.gif");

//Form是类名,图片要放在项目---src文件----image文件夹下,URL是包下的类

ImageIconimageicon=newImageIcon(url);

10.3Image图像

Image代表图像对象,可以通过imageicon类的getImage()方法获得,这个对象是可以用来设置为窗体图标的对象。

把frame的图标给改了,不要用.gif的图片。

10.3JLabel标签

Jlabel类有三个方法:

1)StringgetText()用与获得标签上显示的标题文本

2)VoidsetIcon(Iconicon)设置标签组件需要显示的图标

3)VoidsetText()设置标签所需显示的文本

JLabellabel=newJLabel("也可以添加文字");

也可以什么都不加,最后通过方法来加文字和图标。

10.4JButton按钮

URLurl=Form.class.getResource("/image/picture.png");

Iconicon=newImageIcon(url);

JButtonbut1=newJButton();

JButtonbut2=newJButton("文字");

JButtonbut3=newJButton(icon);

JButtonbut4=newJButton("文字",icon);

常用方法:

1)StringgetText();

2)VoidsetText(Stringtext);

3)VoidsetIcon(Iconicon);

4)VoidsetRolloverIcon(Iconicon);设置鼠标指向按钮时显示的图标。

 

10.5JTextField文本框

JTextFieldtext=newJTextField();

JTextFieldtext1=newJTextField(4);//创建有4列的文本框

JTextFieldtext2=newJTextField("这是文本框");

常用方法:

1)StringgetText()

2)VoidsetText(Stringtext);

3)VoidrequestFocus()//使文本获得焦点

10.6JPasswordField密码框

JPasswordFieldpassword=newJPasswordField();

JPasswordFieldpassword1=newJPasswordField(12);//具有十二列的密码框

JPasswordFieldpassword2=newJPasswordField("mima");

常用方法:

1)Char[]getPassword()获得密码并存在数组中

2)VoidsetEchoChar(charc)设置密码框显示字符

Password.setEchoChar(‘*’);

10.7JComboBox组合框

JComboBoxcombox=newJComboBox();

String[]data=newString[]{"aaa","bbb","ccc","ddd"};

DefaultComboBoxModelmodel=newDefaultComboBoxModel(data);//使用数组创建数据模型

JComboBoxcombox1=newJComboBox(model);

//利用数据模型创建组合框

combox1.setBounds(20,20,50,50);

常用方法:

1)addItem(object)为组合框添加选项

2)getItemCount()获得组合框中项的个数

3)getSelectedItem()获得组合框中当前选择的列表项

4)removeAllItems()移除全部列表项

5)voidremoveItem(object)移除指定名称的项

6)voidsetModel(model)为组合框设定模型

7)voidsetselectedItem(object)通过名称来设定显示哪一项

10.8JRadioButton单选按钮

常用方法:

1)getText();

2)setText(Stringtext);

3)voidsetSelected(Booleantrue/false)。

设置选择否

4)booleangetSelected()获得选择状态

按钮组:

所谓按钮组,就是只允许其中的一个选中

10.9JCheckBox复选框

常用方法:

1)getText();

2)setText();

3)voidsetSelected(Booleantrue/false)

4)BooleanisSelected();获得复选框的当前选择状态

10.10JTable表格

很多时候我们可以以向量中的元素作为单元格中显示的数据。

常用方法:

1)IntgetRowCount()获得表格中所显示数据的行数

2)IntgetSelectedColumn()获得表格中第一个选择列的索引,如果没有被选择的列,则返回-1

3)IntgetSelectedRow()

4)ObjectgetValueAt(introw,intcolumn)获得行和列索引的值

5)VoidsetAutoResizeModel(intmode)当需要调整表格大小时,使用哪一种自动调整模式

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

Mode字段和说明

字段名

说明

AUTO_RESIZE_OFF

关闭表格的自动调整模式,是使用水平滚动条时的必要设置。

AUTO_RESIZE_NEXT_COLUMN

调整某一列的宽度时,只对其下一列进行相反方向的调整

AUTO_RESEZE_SUBSEQUENT_COLUMNS

调整某一列的宽度时,按比例调整其后每一列的宽度,是默认设置

AUTO_RESIZE_LAST_COLUMN

在所有调整大小的操作中,只调整最后一列的宽度

AUTO_RESIZE_ALL_COLUMNS

在所有的调整大小的操作中,按比例调整表格中每一列的宽度

6)VoidsetSelectionMode(intselectionMode)将表的选择模式设置为只允许单个选择、单个连续间隔选择或多间隔选择模式

selectionMode字段和说明、

字段名

说明

SINGLE_SELECTION

设置只允许选择表格中的一行

SIGLE_INTERVAL_SELECTION

设置允许选择表格中连续多行数据

MULTIPLE_INTERVAL_SELECTION

设置可以随意选择表格中的多行数据

7)VoidsetValue(objectvalue,introw,intcolumn)

设置某一单元格的值。

11.菜单

11.1在Java中使用JMenuBar创建菜单栏

菜单栏的方法:

JMenuadd(JMuenmenu)在菜单栏中加菜单。

菜单栏是放菜单的地方,菜单是放菜单项的地方。

11.2菜单

菜单的方法:

1)JMenuItemadd(JMenuItemmenuItem)

向菜单中加入菜单项

2)VoidaddSepartor()将分隔符加入到菜单项的尾部

11.3菜单项

菜单项才是真正的菜单。

菜单项的常用方法:

setText()和setIcon().

12.工具栏

工具栏中可以放一些常用的按钮,方便操作,可以挪动

还可以拉出来成一个单独窗口,方便操作。

13.常用事件:

过程

1)创建ActionListener对象

2)调用addActionListener()方法为组件组成ActionListener对象作为监听器。

3)由外部动作触发组件

4)组件被触发后生成组件的动作事件

5)执行ActionListener对象的actionPerformed()方法,完成动作事件的处理

importjava.awt.event.*;

but.addActionListener(newActionListener(){

publicvoidactionPerformed(finalActionEventarg0)

{

System.exit(0);//退出系统

//我们就把按钮的按下后的操作写在这里面就可以了

}

});

至于具体的函数名称,我们可以通过SWT-Designer来直接双击获得。

下面这是一个通过SWT-Designer来设定直接获得的一些基本语句:

packageaaa;

importjava.awt.EventQueue;

publicclassformdesign{

privateJFrameframe;

publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try{

formdesignwindow=newformdesign();

window.frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

}

}

});

}

/**

*Createtheapplication.

*/

publicformdesign(){

initialize();

}

/**

*Initializethecontentsoftheframe.

*/

privatevoidinitialize(){

frame=newJFrame();

frame.setBounds(100,100,450,300);frame.setDefaultCloseOperation(JFrame.EXIT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1