java图形用户界面设计Swing常用组件_第1页
java图形用户界面设计Swing常用组件_第2页
java图形用户界面设计Swing常用组件_第3页
java图形用户界面设计Swing常用组件_第4页
java图形用户界面设计Swing常用组件_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Swing常用组件NCEPU编写一个计算器

所需要的知识点常用组件和容器的使用方法及功能AWT事件处理模型例Swing

中的容器顶级容器:一般是一个顶层窗口〔框架〕JFrame:用于框架窗口的类,应用程序至少使用一个框架窗口。JDialog:用于对话框的类。JApplet:用于使用Swing组件的JavaApplet的类。中间容器:需要包含在顶层容器中使用的容器。JPanel:面板,是最灵活、最常用的中间容器。JScrollPane:与JPanel类似,但还可在大的组件或可扩展组件周围提供滚动条。JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。JToolBar:按行或列排列一组组件〔通常是按钮〕。与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板〔contentpane〕上。JFrame的使用JFrame的使用向JFrame中添加组件的两种方式之一:用getContentPane()方法获得JFrame的内容面板,再对其参加组件:frame.getContentPane().add(childComponent)在中,我们可以直接添加部件到最高级的Swing容器,也可以直接在容器内设置布局管理和删除部件。这个变化允许我们可以省去调用getContentPane()而直接在容器内应用add(),setLayout()和remove()。然而,还是不能忽略ContentPane,比方说setBackground,需要用fr.getContentPane().setBackground〔〕JFrame的使用当你创立一个JFrame的时候JFramejf=newJFrame();在构造方法JFrame()内部会给jf默认添加一个rootPane。jf.setBackground(Color.blue);jf.getContentPane().setBackground(Color.black);NCEPUimportjavax.swing.*;importjava.awt.*;publicclassFrameTestextendsJFrame{FrameTest(){super("Test");setBackground(Color.BLACK);中问题1for(inti=0;i<36;i++){JPaneljPanel=newJPanel();jPanel.setBackground(newColor((int)(Math.random()*16777215)));中问题2}setSize(400,400);setVisible(true);}publicstaticvoidmain(String[]args){newFrameTest();}}

getContentPane().setBackground(Color.BLACK);JFrame的使用向JFrame中添加组件的两种方式之二:把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:

JpanelcontentPane=newJpanel();

……//把其它组件添加到Jpanel中;

frame.setContentPane(contentPane);Swing常用容器—

JPanel的使用JPanel面板是容器组件,没有标题,不能独立存在。实例化以后必须使用Container类的add方法装入到Window对象或Frame对象中。可用类中的方法获得importjavax.swing.*;importjava.awt.*;importjava.awt.image.BufferedImage;importjavax.imageio.ImageIO;classGUIDemo1{ publicstaticvoidmain(String[]args)throwsException {JFramef=newJFrame("第一个Java窗口"); f.setSize(300,200);BufferedImageimage=ImageIO.read(f.getClass().getResource("/MPj.jpg"));f.setIconImage(image);//设置图标

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);//设置容器可见性f.setResizable(false);f.setLocationRelativeTo(null);

JPanelp=newJPanel(); p.setBackground(Color.BLUE); f.setLayout(null); p.setSize(100,100); f.getContentPane().add(p); }}NCEPUSwing的常用组件—JLabelJLabel(标签)是用户只能查看不能修改的文本/图像显示区域。

NCEPUSwing的常用组件--JTextFieldJTextField(单行文本域)是一个单行条形文本区,能够接收输入、显示输出。NCEPU获得文本域的内容x=Integer.parseInt(text1.getText().trim());

重新设置文本域的内容resultText.setText(s);

Swing的常用组件--JTextFieldsetText(Strings)设置文本框中的文本getText()获取文本框中的文本setEditable(booleanb)指定文本框的可编辑性。创建的文本框默认为可编辑的NCEPU获取两个文本域的输入并求和,然后显示在第三个文本域中。Swing的常用组件——JTextFieldimportjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassTFMath{ publicstaticvoidmain(String[]args){ newTFFrame().launchFrame(); }}classTFFrameextendsJFrame{ JTextFieldnum1,num2,num3; publicvoidlaunchFrame(){ num1=newJTextField(10); num2=newJTextField(10); num3=newJTextField(15); JLabellblPlus=newJLabel("+"); JButtonbtnEqual=newJButton("="); btnEqual.addActionListener(newMyMonitor()); setLayout(newFlowLayout()); add(num1); add(lblPlus); add(num2); add(btnEqual); add(num3); pack(); setVisible(true); }

Swing常用的组件——文本域

privateclassMyMonitorimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ intn1=Integer.parseInt(num1.getText()); intn2=Integer.parseInt(num2.getText()); num3.setText(""+(n1+n2)); } }

}NCEPUSwing的常用组件--JPasswordFieldJPasswordField(口令框)接受用户的输入,但不会真正显示出来,而是显示回显符。密码域JPasswordFieldimportjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassTFPassword{ publicstaticvoidmain(String[]args){ newTFFrame2(); }}密码域JPasswordFieldclassTFFrame2extendsJFrame{ TFFrame2() { JPasswordFieldpf=newJPasswordField(); add(pf); pf.addActionListener(newTFActionListener2()); pack(); setVisible(true); }}密码域JPasswordFieldclassTFActionListener2implementsActionListener{ publicvoidactionPerformed(ActionEvente) { JPasswordFieldpf=(JPasswordField)e.getSource(); System.out.println(pf.getText()); tf.setText(""); }}NCEPU密码域JPasswordFieldNCEPUSwing的常用组件--JPasswordField实战:实现上面的图形用户界面。NCEPUSwing的常用组件--JTextAreaJTextArea(多行文本框)可以输入或输出多行文本。设定是否可编辑

setEditable(Booleanb)JTextArea(Stringtext,introws,intcolumns)指定文本创建文本区,指定行数和列数NCEPU换行方式:手动换行自动换行:通过设置换行属性来防止手动换行。增加滚动条:通过把文本区插入到一个滚动窗格中来实现。这也是给其他组件添加滚动条的方法。textArea.setLineWrap(true);JScrollPanescrollPane=newJScrollPane(textArea);Swing的常用组件--JTextAreaNCEPU文本区的三种显示方式Swing的常用组件--JTextAreaNCEPU例:创立包含文本区、文本框和“提交〞按钮的窗口。

在文本区中输入文字,单击“提交〞按钮,文本

框中会出现同样的文字。Swing的常用组件--JTextAreaimportjava.awt.*;importjavax.swing.*;classJTextAreaExextendsJFrame{JTextAreata;JTextFieldt;JButtonb;JTextAreaEx(){setSize(400,250);setLayout(newFlowLayout());Containerc=getContentPane();setVisible(true);ta=newJTextArea(5,10);//创立文本区、文本框和按钮ta.setLineWrap(true);//自动换行,只添加垂直滚动条JScrollPanescrollPane=newJScrollPane(ta);//加滚动条scrollPane.setBorder(BorderFactory.createLoweredBevelBorder());//设置边界c.add(scrollPane);t=newJTextField(10);b=newJButton("提交");c.add(b);c.add(t);pack();}

publicstaticvoidmain(String[]args){JTextAreaExtae=newJTextAreaEx();}publicvoidactionPerformed(ActionEvente){ t.setText(ta.getText()); }}NCEPU其他Swing组件的使用NCEPUSwing的常用组件—复选框JCheckBoxJCheckBox(复选框)有选中和未选中两种状态,允许用户从一组选项中进行多个选择。

设置复选框的文本

setText获取复选框的文本

getTextNCEPU常用的构造方法有:JCheckBox()JCheckBox(Iconicon)JCheckBox(Iconicon,booleanselected)JCheckBox(Stringtext)JCheckBox(Stringtext,booleanselected)JCheckBox(Stringtext,Iconicon)JCheckBox(Stringtext,Iconicon,booleanselected)Swing的常用组件—复选框JCheckBoxNCEPUJCheckBox的相关事件类事件响应用户点击复选框使其选中状态发生变化时会引发

ItemEvent事件。实现ItemListener接口的itemStateChanged()方法。publicvoidaddItemListener(ItemListenerl)

设置复选框的事件监听器。查阅JDK文档,学习ItemEvent类的常用方法。NCEPU例题:创立如下窗口,包含三个复选框和一个面板,选中某一复选框后,面板的背景色就变成相应的颜色。Swing的常用组件—复选框JCheckBoximportjava.awt.*; importjava.awt.event.*;publicclassCheckBoxExpimplementsItemListener{ Framef;Panelp1,p2; Checkboxck1,ck2,ck3; publicvoiddisplay() {f=newFrame("复选框练习"); ck1=newCheckbox("红色"); ck2=newCheckbox("黄色"); ck3=newCheckbox("蓝色"); p1=newPanel();p2=newPanel(); f.add(p1,"North");f.add(p2);p1.add(ck1);p1.add(ck2);p1.add(ck3);f.setSize(400,200);f.setVisible(true); ck1.addItemListener(this); ck2.addItemListener(this); ck3.addItemListener(this);}publicvoiditemStateChanged(ItemEvente)

{ if(e.getSource()==ck1) p2.setBackground(Color.red);elseif(e.getSource()==ck2) p2.setBackground(Color.yellow); else p2.setBackground(Color.blue);

} publicstaticvoidmain(Stringargs[]){ newCheckBoxExp().display(); }

}NCEPUSwing常用的组件—单项选择框JRadioButtonJRadioButton(单项选择按钮)通常是成组使用的,可以通过ButtonGroup类进行管理。常用的构造方法有:JRadioButton()JRadioButton(Iconicon)JRadioButton(Icon,booleanselected)JRadioButton(Stringtext)JRadioButton(Stringtext,booleanselected)JRadioButton(Stringtext,Iconicon)JRadioButton(Stringtext,Iconicon,booleanselected)NCEPU单项选择框〔JRadioButton〕例如要保证三个JRadioButton的互斥性应该把这三个控件放到同一个ButtonGroup中NCEPUSwing的常用组件—组合框JComboBoxJComboBox(组合框)是一种“多项选择一〞的组件,可编辑每项的内容,而且每项的内容可以是任意类。当用户选取组合框中的某一选择项时,可激发ItemEvent事件。NCEPU常用的构造方法有:

构造函数使用缺省数据模型创立JComboBoxpublicJComboBox()包含指定数组元素的组合框publicJComboBox(Object[]items)Swing的常用组件—组合框JComboBoxNCEPU创立组合框向组合框对象里参加条目

JComboBoxjobsBox=newJComboBox();jobsBox.addItem("job1");jobsBox.addItem("job2");使用String数组创立String[]comboItem={“job1〞,〞job2〞};JComboBoxjobsBox=newJComboBox(comboItem);对组合框是否能够被编辑也可以进行设置。jobsBox.setEditable(true);Swing的常用组件—组合框JComboBoxNCEPU组合框的内容可以动态变化addItem方法:把条目添加到列表的末尾;insertItermAt方法:将新条目添加到列表的任何位置;removeItem方法和removeItemAt方法:删除指定条目;removeAllItems方法:删除所有条目。Swing的常用组件—组合框JComboBoxjobsBox.insertItermAt(“job7〞,6);//在第7个位置增加“job7〞条目。jobsBox.removeItem(“job7〞);//删除“job7〞条目。jobsBox.removeItemAt(5);//删除第6个条目,即“job6〞。jobsBox.removeAllItems();//删除所有条目。NCEPU中选择组合框的条目时,会产生单击事件〔ActionEvent〕和项事件〔ItemEvent〕。组合框事件处理方法说明

publicObjectgetSelectedItem()返回当前选中项。注意类型。

publicintgetSelectedIndex()返回选中项的位置。列表中第一项的位置是0。NCEPU组合框〔JComboBox〕常用的事件处理方式NCEPUSwing的常用组件—列表框(JList)

JList(列表框)向用户显示一组选项构造方法publicJList()构造空列表publicJList(Object[]

listData)

以数组中的元素构造一个JList。String[]fontSize={“小四〞,“四号〞,“小五〞,“五号〞};JListlist=newJList(fontSize);publicJList(Vector<?>

listData)

以Vector中的元素构造一个JList。NCEPU建立列表框前,需要指定所显示的列表条目:String[]courses={“Math〞,“English〞,“Physics〞,“Chemic〞,“Biology〞,“Politics〞};JListcourseList=newJList(courses);如果列表框比较长,而显示屏幕比较小,可以设置列表中显示的行数,同时使用滚动条:courseList.setVisibleRowCount(4);JScrollPanelistScrollPane=newJScrollPane(courseList);Swing的常用组件—列表框(JList)

NCEPU选择列表框中的多个条目有两种方式:连续条目选择和间断条目选择。用户选择列表框条目时,列表框就会产生选择事件。将列表选择监听器ListSelectionListener添加给列表组件,并在该监听器中实现valueChanged方法:courseList.addListSelectionListener(newcourseListener());...classcourseListenerimplementsListSelectionListener{ publicvoidvalueChanged(ListSelectionEventevent) {...}}获得用户所选择的列表框条目以及条目所在的索引号需要使用getSelectedValues方法和getSelectedIndices方法:Object[]selectedCourses=courseList.getSelectedValues();int[]selectedIndexCourses=courseList.getSelectedIndices();Swing的常用组件—列表框(JList)

NCEPUJList(列表框)可以选择一项或多项。列表框查阅JDK文档,学习JList类的常用方法及相关事件。Swing的常用组件—列表框(JList)

NCEPU练习NCEPU例:创立一个包含列表框和文本框的窗口,要求单击或双击列表框中某一选项后,文本框中显示该选项。Swing的常用组件—列表框(JList)

importjava.awt.*;importjava.awt.event.*;publicclassList1implementsActionListener,ItemListener{Framef;TextFieldtf1;Listls1;

publicvoiddisplay(){ f=newFrame("列表框练习"); f.setSize(300,200); f.setLocation(300,300); f.setBackground(Color.lightGray); f.setLayout(newFlowLayout()); tf1=newTextField(10);f.add(tf1);

ls1=newList();f.add(ls1); ls1.add("北京"); ls1.add("上海");ls1.add("南京"); ls1.add("西安");f.setVisible(true);ls1.addActionListener(this);

ls1.addItemListener(this);}

publicvoidactionPerformed(ActionEvente){ tf1.setText(ls1.getSelectedItem());}

publicvoiditemStateChanged(ItemEvente){ tf1.setText(ls1.getSelectedItem());}

publicstaticvoidmain(Stringarg[]){(newList1()).display();}}NCEPUSwing的常用组件—菜单JMenuItem类型有三种:JMenuItemJCheckBoxMenuItemJRadioButtonMenuItemJMenuBarJMenuJMenuItemNCEPU菜单的分类菜单条式菜单〔下拉菜单〕弹出式菜单菜单组件与其他组件不同,不能放入普通的容器,也无法用布局管理器对其加以控制,只能被放入菜单容器中。Swing的常用组件—菜单NCEPU下拉式菜单

下拉式菜单主要由三局部组成菜单条(JMenuBar)菜单(JMenu)菜单项(JMenuItem)。菜单栏菜单条菜单菜单项NCEPU创立菜单栏JMenuBarmenuBar=newJMenuBar();setJMenuBar(menuBar);创立菜单JMenufileMenu=newJMenu("File");创立子菜单。JMenuoptionMenu=newJMenu("Option");创立菜单项JMenuItemnewfile=newJMenuItem("新建");创立下拉式菜单将菜单项参加到子菜单或菜单中。将子菜单参加到菜单中。将菜单参加到菜单栏中。创立菜单的步骤importjavax.swing.*;importjava.awt.event.*;publicclassMenuDemoextendsJFrameimplementsActionListener{ JTextAreatf=newJTextArea(); JMenuBarmbar=newJMenuBar(); JMenumenu=newJMenu("文件"); JMenuItemnewfile=newJMenuItem("新建"); JMenuItemopen=newJMenuItem("翻开"); JMenuItemclose=newJMenuItem("关闭"); JMenuItemquit=newJMenuItem("退出");创立菜单的步骤publicMenuDemo(){ super("Menu实例");newfile.addActionListener(this); open.addActionListener(this); close.addActionListener(this); quit.addActionListener(this);menu.add(newfile);menu.add(open);menu.add(close);menu.addSeparator();menu.add(quit);

mbar.add(menu);setJMenuBar(mbar); add(tf); addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);} }); }

publicvoidactionPerformed(ActionEvente){ if(e.getSource()==newfile)tf.setText("新建文件"); if(e.getSource()==open)tf.setText("翻开文件"); if(e.getSource()==close)tf.setText("关闭文件"); if(e.getSource()==quit)System.exit(0); }publicstaticvoidmain(String[]args){ JFramef=newMenuDemo(); f.setSize(200,200); f.setVisible(true);}}NCEPU同创立一般的菜单项几乎一样,只需注意复选框和单项选择按钮的不同构造方法以及单项选择按钮组的构建:创立单项选择按钮菜单项“Forward〞,并将“Forward〞菜单项参加到“Search〞菜单中。ButtonGroupgroup=newButtonGroup();forwardItem=newJRadioButtonMenuItem("Forward");group.add(forwardItem);searchMenu.add(forwardItem);创立复选框菜单项“ToolBar〞,并参加到子菜单中。JCheckBoxMenuItemtoolItem=newJCheckBoxMenuItem("ToolBar");optionMenu.add(toolItem);创立复选框和单项选择按钮菜单项NCEPU菜单项的使用状态菜单项能够被选取取决于菜单项的启用和禁用状态://初始设置“Save〞菜单项为禁用状态。saveItem.setEnabled(false);快捷键和加速器快捷键显示为带有下划线的字母,加速器那么显示为菜单项旁边的组合键。://设置菜单的快捷键。fileMenu.setMnemonic('F');//设置“Exit〞菜单项的快捷键为“T〞。JMenuItemexitItem=newJMenuItem("Exit",'T');//设置“Exit〞菜单项的加速器为“Ctrl+T〞。exitItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_T,InputEvent.CTRL_MASK));Swing的常用组件—菜单NCEPU弹出式菜单弹出式菜单的创立和菜单的创立根本相同,也需要新建一个弹出式菜单后再参加菜单项。弹出式菜单。popup=newJPopupMenu();新建弹出式菜单中的“Cut〞菜单项和监听器。cutItemPop=newJMenuItem("Cut",'C');popup.add(cutItemPop);Swing的常用组件—菜单NCEPU菜单例如NCEPU创立菜单栏创立菜单参加到菜单栏中创立菜单项参加到菜单中最后将整个菜单栏参加到某个容器中〔Frame〕事件处理创立菜单的步骤NCEPU创立如以以下图所示的带菜单的窗口,完成相应的绘图功能。NCEPUimportjava.awt.*; importjava.awt.event.*;publicclassMenuExpimplementsActionListener{Framef;MenuBarmyMenuBar;MenumenuDraw,menuHelp;MenuItemitemCircle,itemRect,itemLine;

publicvoiddisplay(){f=newFrame("带有菜单的窗口");f.setSize(300,300);f.setLocation(300,300);f.setBackground(Color.lightGray);myMenuBar=newMenuBar();menuDraw=newMenu("画图");menuHelp=newMenu("帮助");myMenuBar.add(menuDraw);myMenuBar.add(menuHelp);itemCircle=newMenuItem("画圆");itemRect=newMenuItem("画矩形");itemLine=newMenuItem("画线");

NCEPUmenuDraw.add(itemLine);menuDraw.add(itemCircle);menuDraw.add(itemRect);f.setMenuBar(myMenuBar);f.setVisible(true);itemCircle.addActionListener(this);itemRect.addActionListener(this);itemLine.addActionListener(this);}publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()==“画圆〞)

f.getGraphics().drawOval(100,100,150,150); elseif(e.getActionCommand()==“画矩形〞)

f.getGraphics().drawRect(50,100,100,100); elseif(e.getActionCommand()==“画线〞)

f.getGraphics().drawLine(100,100,200,200); }publicstaticvoidmain(Stringarg[]){(newMenuExp()).display();}NCEPU创立JMenuItem先创立一个JMenuBar对象再创立假设干个JMenu对象添加处理事件添加JMenuItem到JMenu添加JMenu到JMenuBar添加JMenuBar到容器NCEPU先创立一个JMenuBar对象再创立假设个JMenu对象NCEPUSwing常用的组件—对话框对话框分为模式对话框和无模式对话框。模式对话框必须在用户处理完后才允许用户与主窗口继续进行交互。无模式对话框允许用户同时在对话框和程序剩余局部中输入信息。在Swing中,提供了四种简单的对话框:showMessageDialog:显示一条消息等待用户点击OK;showConfirmD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论