wing是什么意思

更新时间:2022-11-24 17:35:10 阅读: 评论:0


2022年11月24日发(作者:characteristic)

图形界面编程技术手册

编写:Kende_zhu

第一节基本容器JFrame

1、第一个JFrame窗体程序

publicclassJFrameDemo{

publicstaticvoidmain(String[]args){

JFramejf=newJFrame("这是我的第一个swing窗体");

Dimensiond=newDimension(300,200);

e(d);

Pointp=newPoint(500,400);

ation(p);

ible(true);

}

}

第二节标签组件JLabel

1、定义标签对象

publicclassJLabelDemo{

publicstaticvoidmain(String[]args){

JFramejf=newJFrame("这是我的第一个swing窗体");

JLabellab=newJLabel("KENDE",);//实例化标签对

(lab);//将Label组件添加到JFrame面板中

Dimensiond=newDimension(300,200);

e(d);

Pointp=newPoint(500,400);

ation(p);

ible(true);

}

}

2、定义标签字体

标签可以设置字体,包括什么字体,字体的颜色,大小,是否斜体等

publicclassJLabelDemo2{

publicstaticvoidmain(String[]args){

JFramejf=newJFrame("这是我的第一个swing窗体");

JLabellab=newJLabel("KENDE",);//实例化标签对

Fontfont=newFont("Dialog",+,30);

t(font);

(lab);//将组件添加到面板中

Dimensiond=newDimension(300,200);

e(d);

Pointp=newPoint(500,400);

ation(p);

ible(true);

}

}

3、得到本机中所有的字体

publicclassGetAllFonts{

publicstaticvoidmain(String[]args){

GraphicsEnvironmentg=GraphicsEnvironment

.getLocalGraphicsEnvironment();

Stringfonts[]=ilableFontFamilyNames();

for(Stringname:fonts){

n(name);

}

}

}

4、在JLabel中设置显示的图片

publicclassJLabelDemo3{

publicstaticvoidmain(String[]args){

JFramejf=newJFrame("这是我的第一个swing窗体");

Iconicon=newImageIcon("E:picBackGroud野生动物王

国.jpg");

JLabellab=newJLabel("KENDE",icon,);//实

例化标签对象

Fontfont=newFont("Serif",+,30);

t(font);

(lab);//将组件添加到面板中

Dimensiond=newDimension(300,200);

e(d);

Pointp=newPoint(500,400);

ation(p);

ible(true);

}

}

第三节按钮组件JButton

1、在JFrame中增加按钮

publicclassJButtonDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("WelcometoKende'shome!");

JButtonbt=newJButton("按钮");

(bt);

e(300,200);

ation(400,300);

ible(true);

}

}

2、往JButton中添加图片

publicclassJButtonDemo02{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("WelcometoKende'shome!");

StringpicPath="E:";

Iconicon=newImageIcon(picPath);

JButtonbt=newJButton(icon);

(bt);

e(800,500);

ation(400,300);

ible(true);

}

}

第三节菜单栏组件

publicclassIsMenuItemextendsJFrameimplementsActionListener{

privatestaticfinallongrialVersionUID=1L;

JMenuItemmiBlue=newJMenuItem("Blue");

JMenuItemmiGreen=newJMenuItem("Green");

JMenuItemmiRed=newJMenuItem("Red");

JTextFieldtfMain=newJTextField(20);

publicIsMenuItem(){

e(600,400);

aultCloOperation(_ON_CLOSE);

JMenuBarmenuBar=newJMenuBar();

JMenumenuColor=newJMenu("Color");

(menuColor);

(miBlue);

(miGreen);

(miRed);

tentPane().add(menuBar,);

JPanelpanel=newJPanel();

tentPane().add(panel,);

(tfMain);

der(LoweredBevelBorder());

ionListener(this);

ionListener(this);

ionListener(this);

ible(true);

}

publicvoidactionPerformed(ActionEvente){

if(rce()==miBlue){

kground();

}elif(rce()==miGreen){

kground();

}elif(rce()==miRed){

kground();

}

}

publicstaticvoidmain(String[]args){

newIsMenuItem();

}

}

第四节布局管理器

1、FlowLayout布局管理器

FlowLayout属于流式布局管理器,使用此种布局方式,所有的组件会像流水一样依次排列。

publicclassFlowLayoutDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

out(newFlowLayout(,20,20));

JButtonbutton=null;

for(inti=0;i<9;i++){

button=newJButton("按钮-"+i);

(button);

}

e(800,500);

ation(400,300);

ible(true);

}

}

效果图:

2、BorderLayout布局管理器

BorderLayout将一个窗体的版面划成东,西,南,北,中五个区域,可以直接将需要的组件

放到五个区域即可

publicclassBorderLayoutDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

out(newBorderLayout(20,20));

(newJButton("东"),);

(newJButton("西"),);

(newJButton("南"),);

(newJButton("北"),);

(newJButton("中"),);

e(500,300);

ation(400,300);

ible(true);

}

}

3、GridLayout布局管理器

GridLayout布局管理器是以表格的形式进行管理的,在使用此布局管理器的时候必须设置显

示的行数和列数。

publicclassGridLayoutDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

out(newGridLayout(3,5,3,3));

JButtonbutton=null;

for(inti=0;i<13;i++){

button=newJButton("按钮-"+i);

(button);

}

e(500,300);

ation(400,300);

ible(true);

}

}

效果图:

4、CardLayout布局管理器

CardLayout就是将一组组件彼此重叠的进行布局,就像一张张卡片一样,这样每次只会展现

一个界面

publicclassCardLayoutDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

CardLayoutcard=newCardLayout();

out(card);

Containercon=tentPane();

(newJLabel("标签-A",),"first");

(newJLabel("标签-B",),"cond");

(newJLabel("标签-C",),"third");

(newJLabel("标签-D",),"fourth");

(newJLabel("标签-E",),"fifth");

();

ible(true);

(con,"third");

for(inti=0;i<5;i++){

(con);

try{

(2000);

}catch(InterruptedExceptione){

tackTrace();

}

}

}

}

5、绝对定位

以上的布局管理器都是依靠专门的工具完成,在java中也可以通过绝对定位的方式完成

publicclassAbsoluteLayoutDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

out(null);

JLabeltitle=newJLabel("");

JButtonenter=newJButton("进入");

JButtonhelp=newJButton("帮助");

e(500,400);

ation(300,200);

nds(45,5,150,20);

nds(280,30,100,80);

nds(100,50,200,100);

(title);

(enter);

(help);

ible(true);

}

}

第五节其他容器

1、Jpanel

最早是在JFrame中加入组件,但是现在可以将组件加入到Jpanel中,在Jpanel中完成各个

组件的排列,之后再将所有独立的Jpanel直接放在JFrame之中,以完成复杂的图形显示。

publicclassJPanelDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

JPanelpanel=newJPanel();

(newJLabel("标签-1"));

(newJLabel("标签-2"));

(newJLabel("标签-3"));

(newJButton("按钮-X"));

(newJButton("按钮-Y"));

(newJButton("按钮-Z"));

(panel);

();

ation(300,200);

ible(true);

}

}

在开发中可以使用Jpanel完成一些复杂的界面设计。

2、JSplitPane

JSplitPane的主要作用是分割面板,可以将一个窗体分为两个子窗体,可以是水平排列也可

以是垂直排列

publicclassJSplitPaneDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

Containercont=tentPane();

JSplitPanelfsplit=new

JSplitPane(NTAL_SPLIT,

newJLabel("标签-左"),newJLabel("标签-右"));

JSplitPanetpsplit=newJSplitPane(AL_SPLIT,

lfsplit,

newJLabel("标签-下"));

iderSize(30);

iderSize(20);

TouchExpandable(true);

//(tpsplit);

(tpsplit);

();

ation(300,200);

ible(true);

}

}

3、JTabbedPane

publicclassJTabbedPaneDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

Containercont=tentPane();

JTabbedPanetab=newJTabbedPane();

JPanelpanel1=newJPanel();

JPanelpanel2=newJPanel();

(newJButton("按钮"));

(newJLabel("标签"));

("图片选项",newImageIcon("d:"),panel1,

"图片");

("文字选项",panel2);

(tab);

();

ation(300,200);

ible(true);

}

}

4、JScrollPane

在一般的图形界面中如果显示的区域不够大,往往会出现滚动条以方便用户浏览,在Swing

中JScrollPane的主要功能就是为显示的内容加入水平滚动条。

JScrollPane主要由JViewPort和JScrollBar两部分组成,前者主要是显示一个矩形的区域让

用户浏览,而后者主要是形成水平或者垂直的滚动条。

publicclassJScrollPaneDemo01{

publicstaticvoidmain(String[]args){

JFrameframe=newJFrame("Welcometokende'shome");

Containercont=tentPane();

StringpicPath="d:"+tor+"";

JLabellab=newJLabel(newImageIcon(picPath));

JPanelpanel=newJPanel();

JScrollPanescrollPane=newJScrollPane(panel,

AL_SCROLLBAR_ALWAYS,

NTAL_SCROLLBAR_ALWAYS);

(lab);

(scrollPane);

();

ation(300,200);

ible(true);

}

}

第六节事件处理

Java事件处理流程:

1、关闭窗口

在此之前的事件是无效的,窗体关闭也是无效的,如果现在要变得有效,必须加入事件处理

机制

classMyWindowEventHandleimplementsWindowListener{

publicvoidwindowActivated(WindowEvente){

n("windowActivated-->窗口被选中");

}

publicvoidwindowClod(WindowEvente){

n("windowClod-->窗口被关闭");

}

publicvoidwindowClosing(WindowEvente){

n("windowClosing-->窗口关闭");

(1);

}

publicvoidwindowDeactivated(WindowEvente){

n("windowDeactivated-->取消窗口选中");

}

publicvoidwindowDeiconified(WindowEvente){

n("windowDeiconified-->窗口从最小化恢复");

}

publicvoidwindowIconified(WindowEvente){

n("windowIconified-->窗口最小化");

}

publicvoidwindowOpened(WindowEvente){

n("windowOpened-->窗口被打开");

}

};

publicclassMyEventWindowEventJFrame01{

publicstaticvoidmain(Stringargs[]){

JFrameframe=newJFrame("WelcomeTokende'shome");

dowListener(newMyWindowEventHandle());//加入事件

e(300,150);

kground();

ation(300,200);

ible(true);

}

}

注意:发现以上程序虽然实现了窗口关闭,但是没有必要实现那么多的方法,可以如何做呢,

其实在事件中提供了很多的适配器

classMyWindowEventHandle2extendsWindowAdapter{

publicvoidwindowClosing(WindowEvente){

n("windowClosing-->窗口关闭");

(1);

}

};

publicclassMyEventWindowEventJFrame02{

publicstaticvoidmain(Stringargs[]){

JFrameframe=newJFrame("WelcomeTokende’shome");

dowListener(newMyWindowEventHandle2());//加入事件

e(300,150);

kground();

ation(300,200);

ible(true);

}

}

现在只要求一个关闭,资源太浪费了,可以使用匿名内部类的做法减少代码量

publicclassMyEventWindowEventJFrame03{

publicstaticvoidmain(Stringargs[]){

JFrameframe=newJFrame("WelcomeTokende’shome");

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

n("windowClosing-->窗口关闭");

(1);

}

});//加入事件

e(300,150);

kground();

ation(300,200);

ible(true);

}

}

2、按钮事件

如果要使得按钮有效,那么只需要使用ActionListener接口

classActionHandle{

privateJFrameframe=newJFrame("WelcomeTokende'shome");

privateJButtonbut=newJButton("显示");

privateJLabellab=newJLabel();

privateJTextFieldtext=newJTextField(10);

privateJPanelpan=newJPanel();

publicActionHandle(){

Fontfnt=newFont("Serief",+,28);

t(fnt);//设置标签的显示文字

t("等待用户输入信息!");

ionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//if(rce()instanceofJButton){}//判断是否是按钮

if(rce()==but){

t(t());

}

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

out(newGridLayout(2,1));

out(newGridLayout(1,2));

(text);

(but);

(pan);

(lab);

();

kground();

ation(300,200);

ible(true);

}

};

publicclassMyActionEventDemo01{

publicstaticvoidmain(Stringargs[]){

newActionHandle();

}

}

完成一个简单的用户登录,用户名是kende,密码是123

classLoginCheck{

privateStringname;

privateStringpassword;

publicLoginCheck(Stringname,Stringpassword){

=name;

rd=password;

}

publicbooleanvalidate(){

if("kende".equals(name)&&"123".equals(password)){

returntrue;

}el{

returnfal;

}

}

};

classActionHandle2{

privateJFrameframe=newJFrame("WelcomeTokende'shome");

privateJButtonsubmit=newJButton("登陆");

privateJButtonret=newJButton("重置");

privateJLabelnameLab=newJLabel("用户名:");

privateJLabelpassLab=newJLabel("密码:");

privateJLabelinfoLab=newJLabel("用户登陆系统");

privateJTextFieldnameText=newJTextField(10);

privateJPasswordFieldpassText=newJPasswordField();

privateJPanelpan=newJPanel();

publicActionHandle2(){

Fontfnt=newFont("Serief",+,12);

t(fnt);//设置标签的显示文字

ionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(rce()==submit){

Stringtname=t();

Stringtpass=newString(sword());

LoginChecklog=newLoginCheck(tname,tpass);

if(te()){

t("登陆成功,欢迎光临!");

}el{

t("登陆失败,错误的用户名或密码!");

}

}

}

});

ionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(rce()==ret){

t("");

t("");

t("用户登陆系统");

}

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

out(null);

nds(5,5,60,20);

nds(5,30,60,20);

nds(5,65,220,30);

nds(65,5,100,20);

nds(65,30,100,20);

nds(165,5,60,20);

nds(165,30,60,20);

(nameLab);

(passLab);

(infoLab);

(nameText);

(passText);

(submit);

(ret);

e(280,130);

kground();

ation(300,200);

ible(true);

}

};

publicclassMyActionEventDemo03{

publicstaticvoidmain(Stringargs[]){

newActionHandle2();

}

}

3、键盘事件

classMyKeyHandleextendsJFrameimplementsKeyListener{

privateJTextAreatext=newJTextArea();

publicMyKeyHandle(){

le("WelcomeTokende'shome");

JScrollPanescr=newJScrollPane(text);

nds(5,5,300,200);

(scr);

Listener(this);

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

publicvoidkeyPresd(KeyEvente){

("键盘“"+Text(Code())+"”键按下n");

}

publicvoidkeyRelead(KeyEvente){

("键盘“"+Text(Code())+"”键松开n");

}

publicvoidkeyTyped(KeyEvente){

("输入的内容是:"+Char()+"n");

}

};

publicclassMyKeyEventDemo01{

publicstaticvoidmain(Stringargs[]){

newMyKeyHandle();

}

}

以上的键盘事件中,类必须要实现接口中的所有方法,太麻烦,那么在swing中也提供了键

盘处理的Adapter类,直接使用此类即可。

classMyKeyHandle2extendsJFrame{

privateJTextAreatext=newJTextArea();

publicMyKeyHandle2(){

le("WelcomeTokende'shome");

JScrollPanescr=newJScrollPane(text);

nds(5,5,300,200);

(scr);

Listener(newKeyAdapter(){

publicvoidkeyTyped(KeyEvente){

("输入的内容是:"+Char()+"n");

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

};

publicclassMyKeyEventDemo02{

publicstaticvoidmain(Stringargs[]){

newMyKeyHandle2();

}

}

4、鼠标事件

classMyMouHandleextendsJFrameimplementsMouListener{

privateJTextAreatext=newJTextArea();

publicMyMouHandle(){

le("WelcomeTokende'shome");

JScrollPanescr=newJScrollPane(text);

nds(5,5,300,200);

(scr);

Listener(this);

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

publicvoidmouClicked(MouEvente){

intc=ton();

StringmouInfo=null;

if(c==1){

mouInfo="左键";

}

if(c==3){

mouInfo="右键";

}

if(c==2){

mouInfo="滚轴";

}

("鼠标单击:"+mouInfo+"n");

}

publicvoidmouEntered(MouEvente){

("鼠标进入组件。n");

}

publicvoidmouExited(MouEvente){

("鼠标离开组件。n");

}

publicvoidmouPresd(MouEvente){

("鼠标按下。n");

}

publicvoidmouRelead(MouEvente){

("鼠标松开。n");

}

};

publicclassMyMouEventDemo01{

publicstaticvoidmain(Stringargs[]){

newMyMouHandle();

}

}

鼠标中也提供了Adapter类,可以减少代码

classMyMouHandle2extendsJFrame{

privateJTextAreatext=newJTextArea();

publicMyMouHandle2(){

le("WelcomeTokende'shome");

JScrollPanescr=newJScrollPane(text);

nds(5,5,300,200);

(scr);

Listener(newMouAdapter(){

publicvoidmouClicked(MouEvente){

intc=ton();

StringmouInfo=null;

if(c==1){

mouInfo="左键";

}

if(c==3){

mouInfo="右键";

}

if(c==2){

mouInfo="滚轴";

}

("鼠标单击:"+mouInfo+"n");

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

};

publicclassMyMouEventDemo02{

publicstaticvoidmain(Stringargs[]){

newMyMouHandle2();

}

}

5、鼠标拖拽事件

在swing事件中可以使用MouMotionListener接口完成鼠标的拖拽

classMyMouMotionHandleextendsJFrame{

publicMyMouMotionHandle(){

le("WelcomeTokende'shome");

MotionListener(newMouMotionListener(){

publicvoidmouDragged(MouEvente){

n("鼠标拖拽到:X="+()+",Y="+());

}

publicvoidmouMoved(MouEvente){

n("鼠标移动到窗体。");

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

};

publicclassMyMouMotionEventDemo01{

publicstaticvoidmain(Stringargs[]){

newMyMouMotionHandle();

}

}

在程序中也本身包含了Adapter类,直接使用此类完成此功能

classMyMouMotionHandle2extendsJFrame{

publicMyMouMotionHandle2(){

le("WelcomeTokende'shome");

MotionListener(newMouMotionAdapter(){

publicvoidmouDragged(MouEvente){

n("鼠标拖拽到:X="+()+",Y="+());

}

});

dowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

(1);

}

});//加入事件

e(310,210);

ible(true);

}

};

publicclassMyMouMotionEventDemo02{

publicstaticvoidmain(Stringargs[]){

newMyMouMotionHandle2();

}

}

本文发布于:2022-11-24 17:35:10,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/13262.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:thin
下一篇:subtlety
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图