Swing包的特点JDK1.2以后在支持javax.swing包Swing包在图形界面
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
上比AWT更丰富,更美观。Swing拥有4倍于AWT的用户界面组件。是AWT包基础上的扩展,在很多情况下在AWT包的部件前加上字母J即为Swing部件的名称,如:JFrame、JApplet、JButton等。JFrame在JFrame中不能直接调用add方法加入部件,而是要通过getContentPane获得一个容器(Container)对象,再调用这个容器对象的add方法加入其它部件。这点是所有Swing的容器部件均有的特性在JFrame中可以设置用户关闭窗体时在执行windowClosing()方法后的默认处理操作。如果没有注册窗体关闭处理,也将执行默认处理操作。默认处理操作的设置方法voidsetDefaultCloseOperation(intoperation)其中参数operation为一个整数,可以是以下常量:DO_NOTHING_ON_CLOSE:不做任何处理;HIDE_ON_CLOSE:为默认处理情形,自动隐藏窗体。DISPOSE_ON_CLOSE:自动隐藏和关闭窗体。EXIT_ON_CLOSE:仅用于应用程序中,关闭窗体、结束程序运行。例13-1一个简单的演示importjava.awt.*; importjavax.swing.*; importjava.awt.event.*;publicclassContentDemo{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("Demo");Containercont=f.getContentPane();cont.setLayout(newFlowLayout());for(inti=1;i<=8;i++)cont.add(newJButton("Button#"+i));f.setSize(300,300);f.setVisible(true); f.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.out.println("executewindowClosing…");}});f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}等级考试试题//打印无符号整数位importjava.awt.*;importjava.awt.event.*;importjavax.swing.*; publicclassJava_3extendsJFrame{ publicJava_3(){ super("打印无符号整数位"); Containerc=getContentPane(); c.setLayout(newFlowLayout()); c.add(newJLabel("请输入整数:")); finalJTextFieldoutput=newJTextField(33); JTextFieldinput=newJTextField(10); input.addActionListener( newActionListener(){ publicvoidactionPerformed(ActionEvente){ intval=Integer.parseInt( e.getActionCommand()); output.setText(getBits(val)); } } ); c.add(input); c.add(newJLabel("该数的二进制位
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示是")); output.setEditable(false); //*********Found******** c.add(_________________); setSize(720,70); show(); }privateStringgetBits(intvalue){ intdisplayMask=1<<31; StringBufferbuf=newStringBuffer(35); for(intc=1;c<=32;c++){ buf.append( (value&displayMask)==0?'0':'1'); value<<=1; if(c%8==0) buf.append(''); } returnbuf.toString(); }publicstaticvoidmain(Stringargs[]){ Java_3app=newJava_3(); app.addWindowListener( newWindowAdapter(){ //*********Found******** publicvoidwindowClosing(___________e){ System.exit(0); } } ); }}13.2.2JApplet若Applet中包含Swing构件,则必须继承JApplet类。JApplet是顶层Swing容器,包含一个根面板,根面板中包含一个内容面板,内容面板中可以加入除了菜单条之外的所有Swing构件。对JApplet进行布局管理是针对内容面板,而不是JApplet。向JApplet中添加构件,不能直接添加,而是添加到内容面板。JApplet的默认布局管理器是BorderLayout,而Applet的默认布局管理器是FlowLayout。例13-2:投掷筛子的程序。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClickableDiceextendsJApplet{intvalue1=4;//筛子的初始点数.intvalue2=4;//筛子的初始点数.MyPaneldice;publicvoidinit(){dice=newMyPanel();setContentPane(dice);//设置创建的面板为内容面板JButtonb=newJButton("pushme");dice.setLayout(newBorderLayout());dice.add("South",b);b.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){value1=(int)(Math.random()*6)+1;value2=(int)(Math.random()*6)+1;dice.repaint();}});}例13-2:续1voiddraw(Graphicsg,intval,intx,inty){//绘制筛子上面的点g.setColor(Color.white);g.fillRect(x,y,35,35);//筛子画面清除g.setColor(Color.black);g.drawRect(x,y,34,34);//绘制筛子边框if(val>1)//左上角的点g.fillOval(x+3,y+3,9,9);if(val>3)//右上角的点g.fillOval(x+23,y+3,9,9);例13-2:续2if(val==6)//中间左边的点g.fillOval(x+3,y+13,9,9);if(val%2==1)//正中央g.fillOval(x+13,y+13,9,9);if(val==6)//中间右边的点g.fillOval(x+23,y+13,9,9);if(val>3)//底部左边的点g.fillOval(x+3,y+23,9,9);if(val>1)//底部右边的点g.fillOval(x+23,y+23,9,9);}例13-2:续3classMyPanelextendsJPanel{publicvoidpaintComponent(Graphicsg){super.paintComponent(g);//调用父类方法绘制背景draw(g,value1,10,10);//在10,10位置绘制筛子draw(g,value2,120,10);//在120,10位置绘制筛子}}}例13-2:续413.2.3Swing中的按钮和标签–标签和各种按钮均允许设置图标构造方法的一种:JLabel(Stringstr,Iconicon,intalign)也可以在创建了标签对象后通过setIcon方法设置标签的图标。voidsetIcon(Iconicon)在所有图形部件的父类JComponent类中定义了如下方法:voidsetToolTipText(Stringtext)功能:设置鼠标移到部件上时的提示文字。例13-3用户登录界面设计importjava.awt.*;importjavax.swing.*;publicclassContentDemoextendsJFrame{JTextFieldusername;JPasswordFieldpassword;JButtonlogin,register;publicContentDemo(){super("loginframe");Containercont=getContentPane();cont.setLayout(newGridLayout(3,2));cont.add(newJLabel("username:"));username=newJTextField(10);cont.add(username);cont.add(newJLabel("password:"));password=newJPasswordField(10);cont.add(password);login=newJButton(newImageIcon("enter.gif"));register=newJButton(newImageIcon("register.gif"));cont.add(login);cont.add(register);setSize(200,200);setVisible(true);}publicstaticvoidmain(Stringargs[]){newContentDemo();}}JScroolPane容器例13-4 在文本域中显示拆分结果。importjava.awt.*;importjavax.swing.*;publicclassfactorialextendsJApplet{ publicvoidinit(){ Stringoutput=""; JTextAreaoutputarea=newJTextArea(10,50); JScrollPanescroll=newJScrollPane(outputarea); Containercontainer=getContentPane(); container.add(scroll); for(longi=0;i<=10;i++) output+=""+i+"!="+fac(i)+"\n"; outputarea.append(output); } publiclongfac(longno){求n的阶乘….}}工具栏---JTollbarimportjava.awt.*;importjavax.swing.*;publicclassToolBarDemoextendsJApplet{publicvoidinit(){Containercont=getContentPane();cont.setLayout(newBorderLayout());JToolBartool=newJToolBar();ImagemyImage=getImage(getDocumentBase(),"open.gif");JButtonopen=newJButton(newImageIcon(myImage));myImage=getImage(getDocumentBase(),"folder.gif");JButtonmail=newJButton(newImageIcon(myImage));tool.add(open);tool.add(mail);cont.add("North",tool);JScrollPanescroll=newJScrollPane(newJTextArea());cont.add("Center",scroll);}}JOptionPane对话框JoptionPane的对话框可分为四类:ShowMessageDialog:向用户显示一些消息;showInputDialog:提示用户进行输入;showConfirmDialog:向用户确认,含yes/no/cancel响应;showOptionDialog:选项对话框,该对话框是前面几种形态的综合。对话框的外观显示消息对话框showMessageDialog格式:staticvoidshowMessageDialog(ComponentparentComponent,Objectmessage,Stringtitle,intmessageType,Iconicon)其中,参数1定义对话框的父窗体,如果该参数为null,一个运行Java程序的默认窗体作为父窗体,并且在父窗体中居中显示对话框;参数2为消息内容,可以是任何存放数据的部件或数据对象本身;参数3为对话框的标题;参数4为消息类型,内定的消息类型包括:ERROR_MESSAGE(错误消息)INFORMATION_MESSAGE(信息)WARNING_MESSAGE(警告消息)QUESTION_MESSAGE(询问消息)PLAIN_MESSAGE(一般消息);参数5为显示图标,缺少该参数时,根据消息类型有默认的显示图标。提示输入对话框showInputDialog格式1:staticStringshowInputDialog(Objectmessage)最复杂的形态涉及7个参数,分别表示父窗体、消息、标题、消息类型、图标、可选值、初始值。staticObjectshowInputDialog(ComponentparentComponent,Objectmessage,Stringtitle,intmessageType,Iconicon,Object[]selectionValues,ObjectinitialSelectionValue)确认对话框showConfirmDialog最简单只包含两个参数。格式:staticintshowConfirmDialog(ComponentparentComponent,Objectmessage)该对话框显示时包含3个选项Yes,NoandCancel,标题默认为SelectanOption。最复杂的形式有6个参数,具体格式如下:staticintshowConfirmDialog(ComponentparentComponent,Objectmessage,Stringtitle,intoptionType,intmessageType,Iconicon)选项对话框showOptionDialog格式:staticintshowOptionDialog(ComponentparentComponent,Objectmessage,Stringtitle,intoptionType,intmessageType,Iconicon,Object[]options,ObjectinitialValue)使用举例:Object[]options={"OK","CANCEL"};JOptionPane.showOptionDialog(null,"ClickOKtocontinue","Warning",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,options,options[0]);显示一个警告对话框,包括OK,CANCEL两个选项,标题为“Warning”,显示消息为“ClickOKtocontinue”。等级考试上机题importjavax.swing.JOptionPane; publicclassJava_1{ publicstaticvoidmain(Stringargs[]){ //变量初始化 intpasses=0, //考生通过的数目 failures=0, //考生不通过的数目 student=1, //学生计数器 result; //一门考生结果 Stringinput, //用户输入的值 output; //输出字符串//处理10名学生,用计数器控制循环 while(student<=10){ input=JOptionPane.showInputDialog( "输入结果(1=通过,2=不通过)");//*********Found********** result=Integer.__________________(input); if(result==1) passes=passes+1; else failures=failures+1; student=student+1; } //结果处理 output="通过:"+passes+ "\n不通过:"+failures; if(passes>8) output=output+"\n提高学费";//*********Found********** JOptionPane._________________________(null,output, "对考试结果的
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
示例", JOptionPane.INFORMATION_MESSAGE); //*********Found********** System._______________(0); }}等级考试试题2importjavax.swing.*;publicclassJava_2{ publicstaticvoidmain(Stringargs[]){ intfrequency1=0,frequency2=0, frequency3=0,frequency4=0, frequency5=0,frequency6=0,face; //骰子旋转500次的代码 for(introll=1;roll<=500;roll++){ face=1+(int)(Math.random()*6); //*********Found********** switch(__________________){ case1: ++frequency1; break; case2: ++frequency2; break;case3: ++frequency3; break; case4: ++frequency4; break; case5: ++frequency5; break; case6: ++frequency6; break; } }//*********Found********** JTextAreaoutputArea=_____________________JTextArea(7,10); outputArea.setText( "面\t频率"+ "\n1\t"+frequency1+ "\n2\t"+frequency2+ "\n3\t"+frequency3+ "\n4\t"+frequency4+ "\n5\t"+frequency5+ "\n6\t"+frequency6);//*********Found********** JOptionPane.showMessageDialog(null,___________________, "骰子旋转500次", JOptionPane.INFORMATION_MESSAGE);//*********Found********** System.____________________(0); }}颜色对话框在JColorChooser类中有一个静态方法可以弹出对话框选择颜色。具体格式如下:staticColorshowDialog(Componentcomponent,Stringtitle,ColorinitialColor)其中,参数component指出对话框依赖的组件,title为对话框的标题,initialColor指定对话框显示时的初始颜色设置。例13-7给围棋棋盘背景选择颜色change=newJButton("改变背景");cont.add("South",change);change.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ColorboardColor=JColorChooser.showDialog(Simplechess.this,"棋盘颜色",chessboard.getBackground());chessboard.setBackground(boardColor);}});13.2.7选项卡--JTabbedPane通过addTab方法可以给选项卡中添加选项,该方法有多种形态,以下为常用形式:voidaddTab(Stringtitle,Componentcomponent)在选项卡中增加一个用标题代表的部件,无图标。voidaddTab(Stringtitle,Iconicon,Componentcomponent)在选项卡中增加一个部件,该选项通过标题、图标表示,其中,标题和图标可以存在,也可以某个为null。点击选项卡的会发生状态改变事件首先必须注册ChangeListener监听者。voidaddChangeListener(ChangeListenerl)在监听者的类设计中必须实现ChangeListener接口,也就是要编写如下处理方法:publicvoidstateChanged(ChangeEvente)在事件处理编程中,可以利用JTabbedPane提供了getSelectedIndex()方法获取当前选中的选项卡序号,从而进一步实现其他处理例13-7选项卡的应用importjava.awt.*;importjavax.swing.*;importjavax.swing.event.*;publicclassTestTabbedPaneextendsJFrameimplementsChangeListener{JTabbedPanejtp;JPanel[]jp=newJPanel[4];//定义有4个元素的面板数组intcurrentIndex=0;Colorcolor[]={Color.red,Color.green,Color.blue,Color.white};Stringdes[]={"红色卡","绿色卡","兰色卡","白色卡"}; publicTestTabbedPane(){Containercont=getContentPane();jtp=newJTabbedPane();for(inti=0;i<4;i++){jp[i]=newJPanel();//创建面板对象jp[i].setBackground(color[i]);//设置面板的背景jtp.addTab(des[i],jp[i]);//将面板加入选项卡}jtp.addChangeListener(this);cont.add(jtp);//将选项卡加入窗体中setSize(300,150);setVisible(true);}publicvoidstateChanged(ChangeEvente){if(e.getSource()==jtp){inti=((JTabbedPane)e.getSource()).getSelectedIndex();this.setTitle("选择了"+des[i]);//设置窗体的标题}}publicstaticvoidmain(Stringargs[]){newTestTabbedPane();}}