首页 Swing基础知识整理

Swing基础知识整理

举报
开通vip

Swing基础知识整理Swing组件 一、顶级容器组件 1:框架(JFrame) 框架(JFrame)是一个图形界面的主窗口,由边框、标题栏、最大化、最小化、还原、移动、关闭按钮、系统菜单,以及内容窗格组成。 内容窗格是框架的核心区域,主要的图形界面组件、菜单栏、工具栏都在内容窗格中。 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架,如果程序中还有其他窗口,并且这些窗口依赖于框架的,则应使用对话框(JDialog),如果要使其它窗口显示在框架的内部,则应该使用内部框架(JInternalFrame),内部框...

Swing基础知识整理
Swing组件 一、顶级容器组件 1:框架(JFrame) 框架(JFrame)是一个图形界面的主窗口,由边框、标题栏、最大化、最小化、还原、移动、关闭按钮、系统菜单,以及 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 窗格组成。 内容窗格是框架的核心区域,主要的图形界面组件、菜单栏、工具栏都在内容窗格中。 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架,如果程序中还有其他窗口,并且这些窗口依赖于框架的,则应使用对话框(JDialog),如果要使其它窗口显示在框架的内部,则应该使用内部框架(JInternalFrame),内部框架是专用容器组件不是顶级容器组件。 1 2、对话框(JDialog) ?消息框:显示一条消息 ?选择框:让用户进行选择 ?文件选择框:选择文件进行打开、保存等操作 ?颜色选择框:从调色板中选择颜色 每个对话框都必须依附于框架 下面主要介绍V5.0用到的通用对话框(JDialog)和消息框(JOptionPane): 通用对话框(JDialog) 例:在主框架程序中添加一个通用对话框,里面有一个文字标签和一个按钮: public void showDialog(){ JDialog dialog = new JDialog(this,”对话框”); JPanel panel = new JPanel(); Dialog.getContentPane().add(panel); panel.add(new JLabel(“这是一个对话框。”)); panel.add(new JButton(“点击”)); dialog.pack(); dialog.setVisible(true); } 对话框分为有模式的和无模式的两种类型: 有模式的对话框在显示时,将屏蔽用户向对话框所属的主框架键入的所有内容,用户不能对主框架进行任何操作。 无模式对话框在显示时,用户仍然可以用鼠标点击主框架,在主框架里输入内容,或移动主框架。 缺省的JDialog对话框都是无模式对话框。 如果要创建有模式对话框,可以在构造函数里增加一项如下: JDialog dialog = new JDialog(this, "对话框", true); 也可以用setModal函数来设置对话框是有模式的还是无模式的: dialog.setModal(true); // 将对话框设置成有模式的 dialog.setModal(false); // 将对话框设置成无模式的 消息框(JOptionPane) 弹出一个提示消息框: JOptionPane.showMessageDialog(frame,”这是一条提示信息”); –常用消息框的调用: –消息框:利用静态函数showMessageDialog显示 –确认框:利用静态函数showConfirmDialog显示 –选择框:利用静态函数showOptionDialog显示 –输入框:利用静态函数showInputDialog显示 showMessageDialog是一个静态成员函数,可以从类直接调用,它有三种形式: 1、static void JOptionPane.showMessageDialog(Component parentComponent, Object message) 2、static void JOptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType) 3、static void JOptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) int messageType:消息框类型,有下列值: 错误消息:JOptionPane.ERROR_MESSAGE 普通消息:JOptionPane.INFORMATION_MESSAGE 警告消息:JOptionPane.WARNING_MESSAGE 疑问消息:JOptionPane.QUESTION_MESSAGE 无格式消息:JOptionPane.PLAIN_MESSAGE showConfirmDialog是一个静态成员函数,可以从类直接调用: JOptionPane.showConfirmDialog (frame, ”你真的要删除文件吗?”, “删除文件”, JOptionPane.YES_NO_OPTION);//或者是三个按钮JOptionPane.YES_NO_CANCEL_OPTION 3、父窗口与子窗口的层次关系 关于子窗体的层级关系总结: 假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow 1,如果弹出窗体(比如SubWindow)仅仅是调用Show方法,并且没有设置其Owner 属性: ClassRootWindow { void Foo() { SubWindow sw = newSubWindow(); sw.Show(); } } 那么弹出窗体(SubWindow)和源窗体(如RootWindow)没有任何层级关系,也就是说不会以模态方式呈现(SubWindow不会阻挡用户对RootWindow的操作)。SubWindow在Show 出来时在RootWindow的上方,但用户可以通过鼠标点击等方式将RootWindow带到SubWindow前方来而遮盖RootWindow的内容,也就是说,享有用户焦点的窗口将被带到最前方。并且RootWindow和SubWindow的最小化与还原操作互不影响。 2,如果弹出窗体(比如SubWindow)调用Show方法,并且设置了其Owner属性: ClassRootWindow { void Foo() { SubWindow sw = newSubWindow(); sw.Owner = this; sw.Show(); } } 那么弹出窗体(SubWindow)和源窗体(如RootWindow)将有着父子关系,也就是说,弹出窗体将永远在源窗体的上方,但并不是模式的,用户可以操作源窗体,当源窗体被最小化或还原的时候,弹出窗体也将随着最小化和还原,反之不成立。 3,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且没有设置其Owner 属性: ClassRootWindow { voidFoo() { SubWindow sw = new SubWindow(); sw.ShowDialog(); } } 弹出窗体将以模式的方式出现,但没有父子关系,弹出窗体将阻止用户对源窗体的操作,但点击源窗体时弹出窗体不会出现闪动效果。弹出窗体最小化时,源窗体会随之最小化,但还原操作却不可以(很奇怪)。这里有一个值得注意的问题是:在此模式下,如果弹出窗体不在任务栏显示(ShowInTaskBar==false),而源窗体显示在任务栏,用户的操作可能会导致弹出窗口被隐藏在源窗口背后而没办法切换出来(除非使用Alt+TAB)。 4,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且设置了其Owner属性: Class RootWindow { void Foo() { SubWindow sw = newSubWindow(); sw.Owner = this; sw.ShowDialog(); } 弹出窗体将以模式的方式出现,并且有父子关系,弹出窗体将永远处于源窗体上方,弹出窗体将阻止用户对源窗体的操作,并且点击源窗体时弹出窗体会出现闪动效果。弹出窗体最小化或还原时,源窗体会随之最小化或还原 二、通用容器组件 1、面板(JScrollPane/JSplitPane/JTabbedPane) 面板是最常用的容器组件。缺省情况下,面板上除了背景色以外没有任何东西。可以用多个面板,配合不同的布局管理器来配置控件在界面上的布局。 1)滚动条面板 滚动条面板可以在屏幕上有限的区域内显示更大范围的内容。 创建滚动条面板的代码: JScrollPane scrollPane = new JScrollPane(textAreal, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,//竖滚动条,总是出现 //(还有_AS_NEEDED需要时出现和_NEVER从不出现) JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//横滚动条,总是出现 scrollPane.setPreferredSize(new Dimension(250,250)); 创建滚动条面板的过程分两步: 第一步,创建一个JScrollPane对象,在构造函数中需要给出放在面板里的控件 第二步,设置面板的初始大小 2)分隔条面板 分隔条面板将一个面板分为两部分,两部分之间被一个分隔条隔开,用户可以拖动分隔条来改变左右面板的大小。 创建分隔条面板的代码: JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scroll1,scroll2); split.setDividerSize(8); split.setOneTouchExpandable(true); getContentPane().add(split,BorderLayout.CENTER); 3)标签页面板 创建标签页面板的程序代码: JTabbedPane tabbed = new JTabbedPane(); tabbed.addTab(”第一页”,null,scroll1,”这是第一页内容”); tabbed.addTab(”第二页”,null,scroll2,”这是第二页内容”); 第一步:创建一个JTabbedPane对象,使用缺省的构造函数即可 第二步:调用addTab函数将子面板一个个加到标签页中 三、专用容器组件 1、工具栏(JToolBar) 工具栏是图形界面程序常用的组件,它将一组按钮排成一行,放在程序的顶端。工具栏一般作为菜单栏的补充,为菜单栏中的常用命令提供一种快捷的执行方法。 工具栏通过JToolBar对象来实现: JToolBar toolBar = new JToolBar(); toolBar.add(button1); toolBar.add(button2); frame.getContentPane().add(toolBar,BorderLayout.PAGE_START); 2、内部框架(JInternalFrame) 内部框架常用于多文档界面,他的特点是在主框架内部还有一系列子框架。 创建内部框架的基本步骤如下: (1)创建内部框架对象 JInternalFrame subFrame1 = new JInternalFrame(“文档1”,true,true,true,true); 内部框架对象的构造函数有5个参数: ●参数1:显示在子框架标题栏上的名称; ●参数2:设定子框架能否改变大小; ●参数3:设定子框架能否关闭; ●参数4:设定子框架能否最大化; ●参数5:设定子框架能否缩成一个图标。需要注意的是,子框架缩成的图标是 在主框架的左下角,而不会在操作系统的任务栏出现。 (2)设置子框架对象的属性 子框架的属性包括子框架大小、位置,显示子框架,将子框架设置成选中状态,如下面的代码所示: subFrame1.setSize(300, 300); subFrame1.setLocation(30, 30); subFrame1.setVisible(true); try { subFrame1.setSelected(true); } catch (java.beans.PropertyVetoException e) {} (3)将子框架放在桌面面板上 子框架不能放在普通的面板上,必须放到桌面面板(JDesktopPane)上 将桌面面板作为主框架的内容窗格,再将子框架放到桌面面板上,如下面的代码所示: JDesktopPane desktop = new JDesktopPane(); desktop.setBackground(new Color(160, 160, 160)); desktop.add(subFrame1); setContentPane(desktop); 四、简单的swing小部件 1、JLabel标签 2、JButton按钮 3、JTextField文本框 4、JPasswordField 5、JComboBox组合框(与下拉选择相似) 6、JCheckBox(复选框)/JRadioButton(单选框) JCheckBox 和JRadioButton 组件向用户呈现选项,通常采用多选的格式。 一旦选择了JRadioButton,就不能取消对它的选择,除非选择了在同一组中的另外一个单选钮。从效果上看,这就保证了选项的惟一和必选。JCheckBox 的不同在于,允许随机地选择/取消除选择,并允许为问题选择多个答案。把这些JCheckBoxe或JRadioButton捆绑成一组的类是ButtonGroup 类。 需要记住的重要的ButtonGroup方法是: 7、JTextArea(文本区域) JTextArea 比 JTextField 更进了一步。JTextField 被局限在一行文本中,而JTextArea 扩展了这个能力,支持多行文本。 8、JMenu/JMenuItem/JMenuBar JMenu、JMenuItem 和 JMenuBar 组件是在 JFrame 中开发菜单系统的主要构造块。任何菜单系统的基础都是 JMenuBar。它平淡而乏味,但却是必需的,因为每个 JMenu 和JMenuItem 都要用它构建。要用 setJMenuBar() 方法把 JMenuBar 附着到 JFrame。一旦将它附加到 JFrame 中,就可以添加所有想要的菜单、子菜单和菜单项。 JMenu/JMenuItem 的区别看起来可能很明显,但实际上,在幕后看起来并不像表面那样。看看类的类层次结构,就知道JMenu 是 JMenuItem 的子类。但是,在表面上,它们是有区别的:用 JMenu 包含其他 JMenuItem 和 JMenu;JMenuItem 在选中时触发操作。 JMenuItem 也支持快捷键的概念。与您用过的大多数应用程序一样,Swing 应用程序允许您按下 Ctrl+(某个键)来触发一个操作,就像选中菜单键本身一样。想想用来剪切和粘贴的快捷键 Ctrl+X 和 Ctrl+V。 除此之外,JMenu 和 JMenuItem 都支持访问键。用 Alt 键与某个字母关联,模拟菜单本身的选择(例如,在 Windows 中按下 Alt+F,然后按下 Alt+x 就可以关闭应用程序)。 这些类需要的重要方法是: JMenuItem and JMenu: 9、JPopupMenu弹出菜单 弹出菜单是一个可弹出并显示一系列选项的小窗口。JPopupMenu用于用户在菜单栏上选择项时显示的菜单。它还用于当用户选择菜单项并激活它时显示的“右拉式(pull-right)”菜单。最后,JPopupMenu还可以在想让菜单显示的任何其他位置使用。例如,当用户在指定 布局管理器 1、FlowLayout 流式布局 流式布局以行为单位依次排列各组件,一行排不下时,另起一行 JPanel的默认布局是FlowLayout (1)构造方法: FlowLayout(); FlowLayout(int align);//align一般取值有:CENTER、LEFT、RIGHT FlowLayout(int align,int hgap,int vgap);//hgap和vgap指定组件与容器起始边界以及组件 间的水平和垂直间距,默认值为5个像素例如:FlowLayout layout = new FlowLayout(FlowLayout.LEFT, 10, 10); (2)FlowLayout布局的使用: 创建FlowLayout布局对象FlowLayout l = new FlowLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象); 例如,setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); (3)优缺点 缺点:当用户对由FlowLayout布局管理的区域进行缩放时,布局发生变化。 (4)使用场景: 该布局适用于组件个数较少的情况 2、BorderLayout 边界布局 边界布局按照东、西、南、北、中5个方位排列各组件 顶层容器JFrame、JApplet、JDialog、JWindow的默认布局都是BorderLayout (1)构造方法 BorderLayout(); BorderLayout(int hgap,int vgap);//hgap和vgap指定组件间的水平和垂直间距,默认值为0个像素 例如:BorderLayout lay1 = new BorderLayout(); BorderLayout lay2 = new BorderLayout(10, 10); (2)BorderLayout布局的使用 创建BorderLayout布局对象BorderLayout l = new BorderLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建) panel.add(组件对象,方位);//方位的取值为: BorderLayout.EAST 或“East” BorderLayout.WEST 或“West” BorderLayout.SOUTH 或“South” BorderLayout.NORTH 或“North” BorderLayout.CENTER 或“Center”(默认) (3)优缺点 缺点:当加入的组件超过5个时,就必须使用容器的嵌套或其它布局。 优点:当容器缩放时,组件相应的位置不变化,但大小改变。 3、GridLayout 网格布局 网格布局按照二维网格以相同大小依次排列各组件 (1)构造方法 GridLayout();//一行、每个组件一列 GridLayout(int rows,int cols);//行列数 GridLayout(rows,cols,int hgap,int vgap);//行行、列列的间距,默认值为0个像素 例如:GridLayout lay1 = new GridLayout(3,3); GridLayout lay2 = new GridLayout(5,2,10,10); (2)GridLayout布局的使用 创建GridLayout布局对象GridLayout l = new GridLayout(2,2); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象); (3)优缺点 优点:组件的相应位置不随区域的缩放而改变,只是组件的大小改变。 4、CardLayout 卡片布局 该布局以一叠卡片的形式依次排列各组件 (1)构造方法 CardLayout(); CardLayout(int hgap,int vgap);//组件与容器边界间距,默认值为0个像素 例如: CardLayout layout1 = new CardLayout(); CardLayout layout2 = new CardLayout(10,10); (2)CardLayout布局的使用 创建CardLayout布局对象CardLayout l = new CardLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象,“名称”); 显示组件 l.show(panel,“名称”); l.first(panel); l.last(panel); l.next(panel); l.previous(panel); 5、BoxLayout 盒式布局 以一行或一列的方式依次排列各组件 容器Box的默认布局为且只能为BoxLayout 在实际应用中,常使用Box的有关方法实现布局 (1)BoxLayout布局的使用 创建Box对象Box b1 = Box.createHorizontalBox();//创建一个从左到右显示其组件的BoxBox b2 = Box.createVerticalBox();//创建一个从上到下显示其组件的Box 向盒子中添加组件对象(设组件对象已创建)b1.add(组件对象); 添加Glue:Glue用来对组件进行挤压,产生左对齐、右对齐或两端对齐的效果b1.add(Box.createHorizontalGlue()); b2.add(Box.createVerticalGlue()); 添加Strut:Strut用来加入组件间的间距 b1.add(Box.createHorizontalStrut(5)); b2.add(Box.createVerticalStrut(5)); 添加RigidArea:RigidArea用来设置组件的间距和高度(宽度和间距) Dimension d = new Dimension(50,80); b1.add(Box.createRigidArea(d)); b2.add(Box.createRigidArea(d)); 6、GridBagLayout 网格包布局 从网格出发来布局组件,但一个组件在横向和纵向上都可以占据多个网格,灵活但比较复杂。 使用GridBagConstraints指定组件在布局时的有关约束值。 属性(11个) gridx,gridy–位置 gridwidth,gridheight–占据网格数 anchor–方位 fill–充满方式 javax.awt.GridBagConstraints.HORIZONTAL javax.awt.GridBagConstraints.VERTICAL javax.awt.GridBagConstraints.BOTH (2)GridBagLayout布局的使用 创建对象 GridBagConstraints gbc1,gbc2; gbc1 = new GridBagConstraints(); gbc2 = new GridBagConstraints(…); GridBagLayout gbl = new GridBagLayout(); JPanel panel = new JPanel(); panel.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints();……//设置 JButton button = new JButton("Button"); panel.add(button, gbc); 7、null 空布局(不使用布局) 不使用任何布局管理器,一般不使用该方式 (1)空布局的使用 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局为nullpanel.setLayout(null); 设置组件在容器中的位置组件对象.setBounds(x, y, width, height); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象); 事件处理 事件处理机制 事件:Java语言将每一个键盘或鼠标的操作定义为一个“事件”。 当用户点击了一个按钮,意味着一个按钮事件的发生。事件处理方法对该事件进行响应 事件响应:当事件发生时程序应该作出何种响应。 事件处理的模型 事件源:产生事件的组件叫事件源。 事件对象:描述系统中发生了什么的对象 事件监听器:对事件进行处理的类。 Java有20多个预定义的事件类,它们包含了所有组件上可能发生的事件。每一个事件都有一个相应的事件接口,事件接口中的事件处理方法完成对事件的处理。 常见的事件及其监听器一览表 事件名称监听器主要用途 WindowEvent WindowListener 窗口发生变化,如关闭 ActionEvent ActionListener 产生动作,如单击按钮 ItemEvent ItemListener 项目变化,如复选框ListSelectionEvent ListSelectionListener 选择列表中的项目时 ChangeEvent ChangeListener 状态改变,如进度条 FocusEvent FocusListener 焦点获得或失去 MouseEvent MouseListener 鼠标点击、进入或离开 MouseEvent MouseMotionListener 鼠标拖动或移动 KeyEvent KeyListener 按键产生时 MenuEvent MenuListener 菜单选择时 事件处理一般方法 创建将要产生事件的组件对象; 构造实现相应事件监听器接口的类,并创建事件监听器对象; 为组件对象增加事件监听器对象:组件对象.addXxxListener(事件监听器对象); 如:button.addActionListener(this); 注:接口中的方法都含有所产生的事件对象参数,使用该参数的getSource()方法可以得到产生该事件的事件源。 例如: public void actionPerformed(ActionEvent evt); 事件处理 ActionEvent 与ActionListener 当单击按钮、在文本域中回车、选择组合框中的项目、选择菜单项时产生该事件 ActionListener接口中的方法void actionPerformed(ActionEvent); 该事件在实际应用中经常被处理 ActionEvent中的常用方法 String getActionCommand();//获得与该动作相联系的组件的命令字符串名称,组件 对象可使用 setActionCommand(String)方法进行设置,默认的命令字符串名称是组件的标签名称 //使用该方法可实现不同组件共用同一段处理代码 事件处理示例: public class MyActionListener extends JFrame implements ActionListener { private JButton button; public MyActionListener() { button = new JButton(“开始”); button.addActionListener(this); } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == button) {//(evt.getActionCommand().equals(“开始”)) // (evt.getSource().getName().equals(“开始”)) System.out.println(“Start…”); } } } ItemEvent 与ItemListener 当单选按钮、复选按钮、下拉列表框中的项目状态发生变化时产生该事件 ItemListener接口中的方法void itemStateChanged(ActionEvent); ItemEvent中的常用方法: (a)Object getItem();//返回受该事件影响的项目对象,据需要 可将Object转换为相应的类型 (b)int getStateChange();//返回项目状态发生变化的类型,取值: ItemEvent.SELECTED、ItemEvent.DESELECTED WindowEvent 与WindowListener WindowListener接口中含有较多的方法,实现时比较麻烦。为此,Java提供了适配器类WindowAdapter,该类实现了WindowListener接口,可用该类或其子类创建监听器。 注:凡含两个以上方法的监听器都有对应的适配器 适配器类实现一个对应的接口,只是方法为空。 public abstract class WindowAdapter implements WindowListener { public void windowOpened(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void windowClosed(WindowEvent e) {} public void windowClosing(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} } 适配器示例: /** * 回车查询监听器 */ class AddKeyAdapter extends KeyAdapter { CutOverADSLQueryView cutOverADSLQueryView; public AddKeyAdapter (CutOverADSLQueryView cutOverADSLQueryView) { this.cutOverADSLQueryView = cutOverADSLQueryView; } publicvoid keyTyped(KeyEvent e){ char key = e.getKeyChar(); if(key == KeyEvent.VK_ENTER) { cutOverADSLQueryView.handler.query(); } } } 事件适配器类(Adapter) 只实现接口所需要处理的方法?通过覆盖 对于接口中的其它方法: 系统会提供默认的方法(方法体为空) 事件适配器类与事件监听器接口的区别? 利用事件适配器类,只需实现所需处理的方法 利用事件监听器接口,必须实现所有的方法 ListSelectionEvent与ListSelectionListener 当列表框中的项目发生变化时产生该事件 ListSelectionListener接口中的方法void valueChanged(ListSelectionEvent); 处理事件时常使用列表框(JList)对象本身提供的一些方法ChangeEvent 与ChangeListener 当进度条,滑动条、微调器、标签窗格等组件的状态发生变化时产生该事件 ChangeListener接口中的方法void stateChanged(ChangeEvent); FocusEvent 与FocusListener 当组件获得或失去输入焦点时产生该事件 FocusListener接口中的方法void focusGained(FocusEvent); void focusLost(FocusEvent); FocusEvent中的常用方法Component getOppositeComponent(); FocusAdapter适配器 MouseEvent 与MouseListener 当在组件上进行鼠标基本操作时产生该事件 MouseListener接口中的方法: a)void mousePressed(MouseEvent); b)void mouseReleased(MouseEvent); c)void mouseClicked(MouseEvent); d)void mouseEntered(MouseEvent); e)void mouseExited(MouseEvent); MouseEvent中的常用方法 a)int getButton();//NOBUTTON, BUTTON1, BUTTON2, BUTTON3 b)boolean isAltDown(); c)boolean isControlDown(); d)boolean isShiftDown(); e)int getClickCount(); f)Point getPoint(); g)int getX(); h)int getY(); i)boolean isPopupTrigger();//是否是触发弹出式菜单的鼠标操作MouseEvent 与MouseMotionListener 当在组件上进行鼠标拖动或移动时产生该事件 MouseMotionListener接口中的方法 void mouseDragged(MouseEvent); void mouseMoved(MouseEvent); MouseMotionAdapter适配器 KeyEvent 与KeyListener 当组件上发生击键时产生该事件 KeyListener接口中的方法 void keyPressed(KeyEvent); void keyReleased(KeyEvent); void keyTyped(KeyEvent); KeyEvent中的常用方法 a)char getKeyChar(); //返回字符键值 b)int getKeyCode(); //返回整数键值 c)boolean isAltDown(); d)boolean isControlDown(); e)boolean isShiftDown(); 注:KeyEvent中定义了表示键的常量,如VK_1 KeyAdapter适配器
本文档为【Swing基础知识整理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_281650
暂无简介~
格式:doc
大小:86KB
软件:Word
页数:0
分类:互联网
上传时间:2019-04-02
浏览量:4