首页 7JAVA

7JAVA

举报
开通vip

7JAVAnullGUI 编程GUI 编程第七章目标目标了解 AWT 包及其组件 掌握如何创建 GUI 程序 掌握 AWT 组件的基本用法 掌握如何使用布局管理器构造复杂的布局 理解事件控制的要点 掌握基本事件编程 掌握常用Swing组件的使用抽象窗口工具包抽象窗口工具包图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。 抽象窗口工具包(AWT)是一组Java类,此组Java类允许创建图形用户界面(GUI)。 AWT提供用于创建生动而高效的GUI的各种组件。 java.awt 包中的类体系结构java.awt 包中的...

7JAVA
nullGUI 编程GUI 编程第七章目标目标了解 AWT 包及其组件 掌握如何创建 GUI 程序 掌握 AWT 组件的基本用法 掌握如何使用布局管理器构造复杂的布局 理解事件控制的要点 掌握基本事件编程 掌握常用Swing组件的使用抽象窗口工具包抽象窗口工具包图形用户界面(GUI)可以通过键盘或鼠标来响应用户的操作。 抽象窗口工具包(AWT)是一组Java类,此组Java类允许创建图形用户界面(GUI)。 AWT提供用于创建生动而高效的GUI的各种组件。 java.awt 包中的类体系结构java.awt 包中的类体系结构容器容器可以存放组件的区域,可在容器上进行绘制和着色 java.awt包中的Container类可直接或间接派生出两个常用容器:框架(Frame类)和面板(Panel类)。 框架是一个带有边框的独立的窗口。 面板是包含在窗口中的一个不带边框的区域。 容器 – 框架容器 – 框架框架是独立于Applet和浏览器的一个窗口。 可以通过以下任一构造函数来创建: Frame():创建一个不含标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 窗口 Frame(String Title): 创建一个含有标题的窗口,这个标题是由参数title指定的。 当一个Frame窗口被创建以后,需要调用setSize()方法来设置窗口的大小,并调用setVisible()来显示窗口。容器 - 面板容器 - 面板面板不是一个单独的窗口,它只是包含在窗口中的一个区域。 面板是可以将许多组件组合起来的一种容器。 最简单的创建面板的方式就是通过面板的构造函数 Panel() 来进行。 必须将面板添加到窗体中。使用容器示例使用容器示例import java.awt.*;   class PanelTest extends Panel { public static void main(String args[]) { PanelTest p= new PanelTest(); Frame f=new Frame("正在测试面板!"); f.add(p); f.setSize(300,200); f.setVisible(true); } } 使用GUI组件必须导入该包将面板添加到 框架窗体中AWT组件AWT组件组件指可以放置在用户界面上的任何东西,可以将组件设置为可见或重新调整其大小。 AWT支持的组件:标签、文本域、文本区、按钮、复选框、选择框等。 高级组件包括滚动条、滚动窗格和对话框。 向窗口加入一个组件:首先生成所需组件的实例,然后调用add()方法,此方法是在Container类中定义的。不同组件不同组件标签标签可以通过以下任一构造函数来创建: Label( ) : 新建一个空标签 Label(String labeltext): 新建一个包含给定文本的标签 Label(String labeltext, int alignment) :新建一个包含给定对齐方式的标签,对齐方式可以为 Label.LEFT、Label.RIGHT 或 Label.CENTER通常用来指明项目的用途 标签不可以被用户编辑文本域文本域可以通过以下任一构造函数来创建: TextField() : 新建一个文本域 TextField(int columns) : 新建一个包含给定列数的文本域 TextField(String s) : 新建一个包含给定字符串的文本域 TextField(String s, int columns) : 新建一个包含给定字符串和列数的文本域 一种用来输入文本的GUI组件 只能接受一行输入标签和文本域使用示例标签和文本域使用示例import java.awt.*;  class TextLabelDemo extends Frame { Label lblName=new Label(“名称 :”); TextField txtName=new TextField(20); public TextLabelDemo (String title) { super(title); setLayout(new FlowLayout()); add(lblName); add(txtName); } public static void main(String args[]) { TextLabelDemo t=new TextLabelDemo("正在测试组件!"); t.setSize(300,200); t.show(); } } 新建一个标签新建一个文本域添加到窗口文本区域文本区域可以通过以下构造函数来创建: TextArea( ) : 新建一个TextArea TextArea(int rows, int cols) : 新建一个包含给定行数和列数的TextArea TextArea(String text, int rows, int cols) : 新建一个包含给定字符串、行数和列数的TextArea要接受输入多行文本时使用 可以包括滚动条TextArea txtComment=new TextArea(); add(txtComment); 按钮按钮可以使用以下任一构造函数来创建按钮: Button() : 新建一个空的按钮 Button(String text) : 新建一个包含给定字符串的按钮按钮是任何GUI都不可或缺的组件 用来捕捉用户操作的最为简便的方式. . . Button btnOk=new Button("确定!"); Button btnCancel=new Button("取消!"); add(btnOk); add(btnCancel); . . .复选框复选框可以使用以下任一构造函数来创建复选框:       - Checkbox():创建一个空的复选框,且未被选中 - Checkbox(String text):创建一个用给定字符串作为标签的复选框,且未被选中 - Checkbox(String text,Boolean on):创建一个标签由参数text指定的复选框,允许通过参数on设定复选框的初始状态。用于多选项的用户输入,用户可以通过单击复选框来选定或取消选定某选项。单选按钮单选按钮可以通过复选框组生成一系列互斥的复选框,实现单选按钮功能。 在一组单选按钮中只能选择一个按钮。 首先创建一个 CheckboxGroup 对象。 CheckboxGroup cg=new CheckboxGroup(); 然后再创建各单选按钮。 Checkbox male=new Checkbox("男",cg,true); Checkbox female=new Checkbox("女",cg,false);复选框和单选按钮使用示例复选框和单选按钮使用示例import java.awt.*; class Qualification extends Frame { Checkbox t1=new Checkbox("Visual Basic"); Checkbox t2=new Checkbox("Visual C++"); Checkbox t3=new Checkbox("Java"); CheckboxGroup cg=new CheckboxGroup(); Checkbox r1=new Checkbox("专科",cg,false); Checkbox r2=new Checkbox("本科",cg,false); Checkbox r3=new Checkbox("硕士",cg,false); Checkbox r4=new Checkbox("博士",cg,false); Label lb1=new Label("您的学历为:" ); Label lb2=new Label("您精通的语言为:" ); 新建复选框新建一个复选框组添加 单选按钮 public Qualification(String s ) { super(s);setLayout(new GridLayout(10,1)); add(lb1);add(r1);add(r2);add(r3); add(r4); add(lb2);add(t1);add(t2);add(t3); } public static void main(String args[]) { Qualification q=new Qualification ("学识!"); q.setSize(400,250); q.show( ); } } 将单选按钮添加到窗体将复选框添加到窗体选择框选择框用 Choice 类可以创建一个选择框 Choice moviestars = new Choice( ); 通过 addItem() 方法可以添加项目 moviestars.addItem("安东尼奥.班德拉斯"); moviestars.addItem("莱昂纳多.迪卡普尼奥"); moviestars.addItem("桑德.布洛克"); moviestars.addItem("休.葛兰特"); moviestars.addItem("朱莉亚.罗萡茨"); 用来向用户显示一个选择列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 布局管理器布局管理器用户界面上的组件可以按不同方式排列。 Java使用布局管理器来管理这些排列方式。 每当需要重新调整屏幕大小或重新绘制屏幕上任一项目时,就要用到布局管理器。 AWT提供一组用来进行布局管理的类,称为布局管理器或布局。所有布局都实现 LayoutManager接口。布局类型布局类型Java中的布局类型包括以下几种: FlowLayout(流式布局) BorderLayout (边界布局) GridLayout(网格布局) GridBagLayout(网格包布局) CardLayout (卡片布局)布局类型的选用布局类型的选用每个布局管理器都有自己特定的用途。 要按行和列显示几个同样大小的组件,GridLayout 会比较合 要在尽可能大的空间里显示一个组件,就要选择 BorderLayout 或 GridBagLayout 如何设置布局如何设置布局每个容器(Container对象)都有一个与它相关的缺省的布局管理器。 Panel,Applet 的缺省布局是 FlowLayout Frame的确省布局是BorderLayout 在没有设置新的布局前,在容器中添加组件都按照该容器的缺省布局排列。 可以通过setLayout( )方法为容器设置新的布局。 FlowLayoutFlowLayoutFlowLayout的构造函数有: FlowLayout( ):生成一个默认的流式布局 FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离Applet和面板的缺省布局 组件从左上角开始按从左到右、从上到下的方式排列FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT); setLayout(exlayout); // 为容器设置新布局 BorderLayout 2-1BorderLayout 2-1下面是BorderLayout所定义的构造函数: - BorderLayout( ):生成默认的边界布局 - BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离 窗口、框架和对话框等的缺省布局 组件可被置于容器的北、南、东、西或中间位置BorderLayout 2-2BorderLayout 2-2 BorderLayout 类定义了几个常量值以指定相应区域: BorderLayout.NORTH – 对应容器的顶部 BorderLayout.EAST – 对应容器的右部 BorderLayout.SOUTH – 对应容器的底部 BorderLayout.WEST – 对应容器的左部 BorderLayout.CENTER – 对应容器的中部 加入组件方法: void add(Component Obj, int region); . . . setLayout(new BorderLayout()); Button btnEast=new Button("东"); Button btnWest=new Button("西"); Button btnNorth=new Button("北"); Button btnSouth=new Button("南"); Button btnCenter=new Button("中"); add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnSouth,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER); . . .GridLayoutGridLayoutGridLayout的构造函数如下所示: -  GridLayout():生成一个单列的网格布局 - GridLayout(int row,int col):生成一个设定行数和列数的网格布局 - GridLayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔 用于将容器区域划分为一个矩形网格 组件按行和列排列. . . Button btn[]; // 声明按钮数组 String str[]={"1","2","3","4","5","6","7","8","9"}; setLayout(new GridLayout(3,3)); btn=new Button[str.length]; // 创建按钮数组 for(int i=0;iListener (TypeListener e)nullAWT采取的事件控制过程 监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口” 事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。 事件源将在发生事件时向所有注册的监听器发送事件对象。 监听器对象使用事件对象中的信息来确定它们对事件的响应。null事件源、监听器和监听器接口按钮单击事件示例按钮单击事件示例public class MyEventTest extends Panel { Button myButton = new Button("蓝色"); . . . // 创建面板或其他 GUI 组件 MyListener myAction = new MyListener(); MyButton.addActionListener(myAction);  private class MyListener implements ActionListener { public MyListener() { . . . // 初始化 } public void actionPerformed(ActionEvent event) { . . .//需要为事件进行的操作 } } }实现了ActionListener接口的监听器实现了actionPerformed方法,以便根据参数 ActionEvent 对象的信息对事件做出响应为按钮事件 注册监听器事件体系结构事件体系结构AWT 事件类型 2-1AWT 事件类型 2-1AWT 事件类型 2-2AWT 事件类型 2-2监听器接口监听器接口监听器类通过实现 java.awt.event 包中定义的一个或多个监听器接口来创建。 在发生事件时,事件源将调用监听器定义的相应方法。 有兴趣接收事件的任何监听器类都必须实现监听器接口。 监听器接口列表 2-1监听器接口列表 2-1监听器接口列表 2-2监听器接口列表 2-2适配器类适配器类为了使事件处理变得简单,Java 为具有多个方法的监听器接口提供适配器类。适配器类实现并提供了一个事件监听器接口中的所有的方法,但这些方法都是空方法。 private class MyMouseAdapter extends MouseAdapter { private Color bgColor; public MyMouseAdapter (Color c){ bgColor = c; }   public void mouseClicked(MouseEvent mevent){ setBackground(bgColor); repaint();   } } 事件源、监听器和监听器接口事件源、监听器和监听器接口事件源描述事件对象中事件的性质。 每个事件源都被映射至一个或多个事件监听器,发生事件时需要调用这些事件监听器。 事件源随后通过将事件对象传递至监听器接口类的方法,将事件信息发送到监听器接口。 监听器 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 事件对象找出事件信息,以便给出响应 。null事件源对象监听者对象事件源类监听者类创建对象创建对象委托事件处理关系触发事件进行中…接收事件对象事件传递处理事件例如下面的WINDOW_EVENT 的例子事件源、监听器和监听器接口窗口事件窗口事件当一个窗口被激活、禁止、关闭、正在关闭、最小化、恢复、打开时将生成窗口事件。 需要实现的方法如下: windowActivated、 windowClosed windowClosing、 windowDeactivated windowDeiconified、windowIconified windowOpenedWindowListener 接口WindowListener 接口Used to process the Event of Window: Public void windowOpened(WindowEvent e) Public void windowClosing(WindowEvent e) Public void windowClosed(WindowEvent e) Public void windowIconified(WindowEvent e) Public void windowDeiconified(WindowEvent e) Public void windowActivated(WindowEvent e) Public void windowDeactivated(WindowEvent e)WindowAdapter 适配器类 参看javadoc,它是一抽象类窗口事件接口A Listener Class for Window EventA Listener Class for Window Eventimport java.awt.*; import java.awt.event.*; public class WindowDestroyer extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } }Example焦点事件焦点事件任何 GUI 对象的获得或失去焦点都被视为焦点事件,并且事件源必须向事件监听器通知事件对象已失去或已获得焦点。 焦点监听器需要实现两个方法:focusGained 和 focusLost。 要进行错误检查或数据校验时,对焦点的捕捉就显得尤其重要。 焦点事件示例焦点事件示例public void focusLost(FocusEvent event) { if(event.getComponent() == ccField && !event.isTemporary()) { if(!checkFormat(ccField.getText())) ccField.requestFocus(); } }实现了当捕捉到失去 焦点事件时如何响应 检验失去焦点的组件中的文本格式是否正确 如果格式不正确,将焦点移回到该组件 null 在按下或释放键盘上的一个键时,将生成键盘事件。 keyEvent 类包含用来表示按下或点击的键的常量。 生成 keyEvent 时将调用 keyListener。 如果程序需要处理特殊的键,如方向键,需要通过调用keyPressed( ) 方法来处理。键盘事件public void keypressed(keyEvent k){ int keyCode = k.getKeyCode(); if ( keyCode == k.VK_RIGHT && k.isShiftDown()){ . . . } }检测用户是否按下了Shift+右箭头键 键盘事件示例键盘事件示例class MyPanel extends Panel { public MyPanel() { TextField tField = new TextField(20); add(tField); MyKeyAdapter bAction = new MyKeyAdapter(); tField.addKeyListener(bAction); }   private class MyKeyAdapter extends KeyAdapter { public void keyPressed(KeyEvent kevent){ setBackground(Color.blue); repaint(); } public void keyReleased(KeyEvent kevent) { setBackground(Color.red); repaint(); } public void keyTyped(KeyEvent kevent) { if (kevent.getKeyChar() == 'x') System.exit(0); } } } 按下键时背景变为兰色,释放键时背景变为红色,输入字符x时退出程序null鼠标事件 任何时候移动、单击、按下或释放鼠标,都会生成鼠标事件。 鼠标事件有两种监听器:MouseListener 和 MouseMotionListener。 需要实现的方法如下: mouseClicked、 mouseEntered、mouseExited mousePressed、mouseReleased mouseDragged、mouseMoved nullpublic void mouseClicked(MouseEvent m){ int x = m.getX(); int y = m.getY();   int clickCount = m.getClickCount(); if(clickCount == 2){ Graphics g = getGraphics(); g.drawString("鼠标双击!", x, y); g.dispose(); } } 鼠标事件示例获得点击鼠标时鼠标指针的x及y坐标 确定单击和双击多个监听器多个监听器所有AWT事件源均支持监听器的多点传送模型。 可以将同一事件发送到多个监听器对象。 需要向一个事件源添加多个监听器,以便使所有注册的监听器都能够对事件源生成的事件作出响应。Swing介绍Swing介绍Java1.2引入称为Swing的新的GUI组件库。 Swing包括javax.swing包及其子包。 Swing有一个与平台无关的实现,而且具有一个艺术状态的属性集。 尽管Swing独立于AWT,但它是依照基本的 AWT类实现的。MVC设计模式MVC设计模式Swing 结构Swing 结构Swing 组件Swing 组件Swing 组件独立于本地窗口系统。 Swing组件除了 AbstractButton 类之外都以 J 开头。 Swing 组件是基于 AWT 构建。 包含 AWT 可视化组件的替代组件,也包含复杂组件 - 树和表Swing 应用程序的容器层次Swing 应用程序的容器层次设计 GUI 时,都有用于放置可视化组件的主窗口。 Container 对象可用于将组件组合在一起。 容器中的组件根据特定布局排列。 Swing 中的容器有两类: - 顶级容器 - 中间容器 顶级容器顶级容器JFrame:用于框架窗口的类,此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带 GUI 的应用程序通常至少使用一个框架窗口。 JDialog:用于对话框的类。 JApplet:用于使用 Swing 组件的 Java Applet 的类。中间容器中间容器JPanel:最灵活、最常用的中间容器。 JScrollPane:与 JPanel 类似,但还可在大的组件或可扩展组件周围提供滚动条。 JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。 JToolBar:按行或列排列一组组件(通常是按钮)。Swing GUI框架Swing GUI框架菜单栏顶级容器GUI组件GUI组件 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 窗格基本的 Swing 应用程序基本的 Swing 应用程序import javax.swing.*; public class HelloSwing { public static void main(String[] args) { JFrame frame = new JFrame("HelloSwing"); JLabel label = new JLabel("你好,Swing"); frame.getContentPane().add(label); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setSize(300,200); frame.setVisible(true); } } 导入必要的包,一般还需导入: import java.awt.*; import java.awt.event.*; 设置一个 顶级容器创建一个 Swing组件将组件添加到 容器内容窗格实现了在单击“关闭”按钮时, 可以关闭窗口。如果使用的 早期版本的平台,则需要通过事件监听器实现 JFrameJFrame是放置其他 Swing 组件的顶级容器 JFrame 组件用于在 Swing 程序中创建窗体 它的构造函数: JFrame() JFrame(String Title) 组件必须添加至内容窗格,而不是直接添加至 JFrame 对象,示例: frame.getContentPane().add(b);JPanelJPanelJPanel 组件是一个中间容器 用于将小型的轻量级组件组合在一起 JPanel 的缺省布局为 FlowLayout JPanel 具有下列构造函数: JPanel() JPanel(LayoutManager lm)JButtonJButtonSwing 的按钮相对于AWT中Button类提供了更多的功能。 JButton类允许用图标、字符串或两者同时构造一个按钮。 构造函数如下: JButton() JButton(Icon icon):icon表示使用的图标 JButton(String text):text表示使用的字符串 JButton(String text, Icon icon) … ImageIcon buttonIcon1 = new ImageIcon("on.gif"); JButton b1 = new JButton("First Button", buttonIcon1); b1.setMnemonic(KeyEvent.VK_F); …设置键盘 快捷方式创建一个带图标的JButtonJPanel和JButton使用示例JPanel和JButton使用示例import java.awt.*; import javax.swing.*; class PanelDemo extends JFrame { public PanelDemo( String title){ super(title); Container c=getContentPane(); JPanel cpane = new JPanel(); JButton ok = new JButton("确定"); cpane.add(ok); JButton cancel = new JButton("取消"); cpane.add(cancel); c.add(cpane,BorderLayout.SOUTH); } public static void main(String args[]) { PanelDemo pd=new PanelDemo("JPanel测试"); pd.setSize(300,200); pd.setVisible(true); } } JLabel JLabel 它既可以显示文本也可以显示图像 构造函数如下: JLabel(Icon icon):icon表示使用的图标 JLabel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。… ImageIcon icon = new ImageIcon("Calv.gif"); JLabel calv_label = new JLabel("这是 Calvin", icon, SwingConstants.LEFT); …文本组件 文本组件 JtextComponent 为所有 Swing 文本组件的根类JTextFieldJTextFieldJTextField 组件允许输入或编辑单行文本 此类的构造函数包括: JTextField() JTextField(Document doc, String text, int columns) JTextField(int columns) JTextField(String text) JTextField(String text, int columns)… Container con = getContentPane(); con.setLayout(new FlowLayout()); JLabel jl = new JLabel(“文本域”); con.add(jl); JTextField tf = new JTextField(20); con.add(tf); …JTextAreaJTextAreaJTextArea 组件用于接受来自用户的多行文本 它可实现可滚动界面 JTextArea 组件可使用下列构造函数创建: JTextArea() JTextArea(int rows, int cols) JTextArea(String text) JTextArea(String text, int rows, int cols) JTextArea(Document doc) JTextArea(Document doc, String text, int rows, int cols)… JLabel jl = new JLabel(“文本区”); con.add(jl); JTextArea ta = new JTextArea(5,10); con.add(ta); …选择性输入选择性输入为了简化表单填写过程,通常为用户提供多种可供选择的选项,而无需用户写出他们的响应。常用于选择性输入的组件有: 复选框 单选按钮 列表框 组合框 复选框复选框复选框用于为用户提供一组选项 JCheckBox 类具有下列构造函数: JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon, boolean selected) JCheckBox(String text) JCheckBox(String text, boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected)单选按钮单选按钮单选按钮允许用户从多个选项中选择其中一个 ButtonGroup 用于在 Swing 中创建组 JRadioButton 对象可使用下列构造函数创建: JRadioButton() JRadioButton(Icon icon) JRadioButton(Icon, boolean selected) JRadioButton(String text) JRadioButton(String text, boolean selected) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected)JCheckBox和JRadioButton示例JCheckBox和JRadioButton示例import java.awt.*; import javax.swing.*; class Hobby extends JPanel { JCheckBox c1 = new JCheckBox("阅读",false); JCheckBox c2 = new JCheckBox("音乐",false); JCheckBox c3 = new JCheckBox("绘画",false); JRadioButton rad1 = new JRadioButton("大专"); JRadioButton rad2 = new JRadioButton("本科"); JRadioButton rad3 = new JRadioButton("硕士"); JLabel jl = new JLabel("您有什么爱好?" ); JLabel j2 = new JLabel("您的最高学历?" ); JButton exitbtn = new JButton("退出"); public Hobby( ) { setLayout(new GridLayout(9,1)); add(jl); add(c1); add(c2); add(c3); add(j2); add(rad1); add(rad2); add(rad3); add(exitbtn); } }public class Hobbytest extends JFrame { Hobbytest() { super(); getContentPane().add(new Hobby()); setSize(300,200); setVisible(true); } public static void main(String args[]) { new Hobbytest(); } }列表列表在可供选择的选项很多时,可向用户呈现一个列表来供他们选择 JList 组件依次排列项目列表,这些项目可以单选或多选 JList 类既可显示字符串,也可显示图标 JList 不支持双击 MouseListener 可用于解决双击问题JList 构造函数JList 构造函数public JList() : 使用空模型构造 JList public JList(ListModel dataModel) :构造一个列表,用它显示指定模型中的元素。 public JList (Object [] listData) :构造一个列表以显示指定数组listData的元素。 JList 不支持滚动。要启用滚动,可使用下列代码: JScrollPane myScrollPane=new JScrollPane(); myScrollPane.getViewport().setView(dataList);… String stars[] = {"安东尼奥.班德拉斯","来昂纳多.迪卡普尼奥", "桑德拉.布洛克","休.格兰特","朱莉亚.罗伯茨"}; JList moviestars = new JList(stars); …组合框组合框文本域和下拉列表的组合 在 Swing 中,组合框由 JComboBox 表示 构造函数如下: public JComboBox() : 此构造函数使用缺省数据模型创建 JComboBox public JComboBox(ComboBoxModel asModel) : 使用现有 ComboBoxModel 中的项目的组合框 public JComboBox(Object [] items) : 包含指定数组元素的组合框… String names[] = {"弗雷德里克.福西斯", "约翰.克里沙姆", "玛丽.希金斯.克拉克","帕特丽夏.康威尔"}; JComboBox authors = new JComboBox(names); …菜单菜单菜单显示项目列表,指明各种任务。 选择或单击某个选项时会打开另一个列表或子菜单。 Swing 菜单由菜单栏、菜单和菜单项构成。 菜单栏是所有菜单和菜单项的根JFC 菜单组件JFC 菜单组件JMenuBarJMenuBarJMenuBar 是可通过 JFrame、JWindow 或 JInternalFrame 的根窗格添加至容器的组件。 由多个 JMenu 组成,每个 JMenu 在 JMenubar 中都表示为字符串。 JMenuBar 需要两个附加类: SingleSelectionModel类 : 跟踪当前选定的菜单 LookAndFeel类 :负责绘制菜单栏以及对在其中发生的事件作出响应JMenuJMenuJMenu 在 JMenuBar 下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。 JMenu 具有两个附加类: JPopupMenu :用于显示 JMenu 的菜单项 LookAndFeel :负责绘制菜单栏中的菜单以及对在其中发生的所有事件作出响应JPopupMenu 的函数JPopupMenu 的函数JMenuItemJMenuItemJMenu 或 JPopupMenu 中的一个组件,以文本字符串形式显示,可以具有图标 JMenuItem 的外观可以修改,如字体、颜色、背景、边框等 除字符串外,在 JMenuItem 中还可以添加图标JCheckBoxMenuItemJCheckBoxMenuItem将复选框作为其项目 复选框是使用 JCheckBox 类创建的 可有文本字符串和(或)图标 在单击并释放 JCheckBoxMenuItem 时,菜单项的状态会变为选定或取消选定JRadioButtonMenuItemJRadioButtonMenuItem除了在任何时间点都只能选择一个单选按钮外,其他的与复选框类似 可有文本字符串和(或)图标 单击选定的单选按钮不会改变其状态 单击未选定的单选按钮时将取消选定此前选定的单选按钮菜单使用示例菜单使用示例import javax.swing.*; import java.awt.*; public class Menutest extends JFrame { public void Menutest() { JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("显示"); JMenu pullRightMenu = new JMenu(“问好"); fileMenu.add("欢迎"); fileMenu.addSeparator(); fileMenu.add(pullRightMenu); fileMenu.add("退出"); pullRightMenu.add(new JCheckBoxMenuItem("早上好!")); pullRightMenu.add(new JCheckBoxMenuItem("下午好!")); pullRightMenu.add(new JCheckBoxMenuItem("晚安!再见!")); mb.add(fileMenu); setJMenuBar(mb); } …. } 小结小结在当代程序的设计和使用中,图形用户界面的使用是非常重要的,也是使用广泛的,换句话说,图形用户界面GUI常常成了应用程序开发的核心。 在图形用户界面的设计中,组件和容器是两个非常重要的概念。组件是各种各样的类,是封装了内部结构和属性的基本图形单位,例如按钮、文本框、窗口等。容器其实也是组件,它可以装载和摆放其他组件。 Java推荐使用布局管理器来管理容器中组件的摆放方式,每种布局管理器都有自己的摆放规律。 Java的事件处理机制采用了委托代理模式,主要涉及事件源对象、事件对象、事件监听器对象三个方面,事件源对象产生事件对象,将事件对象发送到事件监听器对象,由事件监听器对象进行处理。
本文档为【7JAVA】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_897114
暂无简介~
格式:ppt
大小:673KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2011-03-18
浏览量:25