`

java swing基础与事件处理

阅读更多
一、swing基础
1、平台无关性,无需依赖平台
  容器:代表管理,可以添加组件
  组件:代表功能
2、类层次结构
java.awt.Component
     java.awt.Container
       java.awt.Window
       javax.swing.JWindow
        java.awt.Frame——javax.swing.JFrame
         java.awt.Dialog——javax.swing.JDialog
          java.awt.Pane
        java.awt.Applet——javax.swing.JApplet
   javax.swing.JComponet——swing轻量级组件
3、swing组件分类
(1)顶层容器:
        JFrame, JDialog, JApplet, JWindow
(2)普通容器:
        JPanel, JScrollPane, JSplitPane,JTabbedPane,JOptionPane
(3)特殊容器:
        JInternalFrame, JLayeredPane, JRootPane, JToolBar
(4)基本控件,实现人-机交互的组件:
        JButton , JTextField, JLabel, JTextArea, JMenu, JSlider
       JComboBox,JList ,JProgressBar, JToolTip
       JColorChooser, JFileChooser, JTable, JTree
4、JFrame
(1)JFrame类的特性:
    默认不可视;
    默认宽高为0;
    JFrame与JFrame不能相互嵌套
     默认布局BorderLayout
(2)常用方法
     JFrame();创建无标题窗口
   JFrame(String s):创建一个有标题窗口   
     * get/setTitle(char s):获取/设置帧的标题,将s设置为窗口标题。
  * get/setState():获取/设置帧的最小化、最大化等状态。
  * is/setVisible(boolean b):获取/设置帧的可视状态
  * get/setLocation(int a,int b):获取/设置帧在屏幕上应当出现的位置。      *get/setSize(int width,int height):获取/设置帧的大小。         
     *JFrame.setResizable(false/true):设置窗口的大小是否可被改变。    
     *setDefaultCloseOperation(int operation);设单击关闭图标后的响应, 
      operation可取下值 :
       DO_NOTHING_ON_CLOSE 什么也不做
       HIDE_ON_CLOSE 隐藏当前窗口
       DISPOSE_ON_CLOSE 隐藏当前窗口,并彩旗窗体占有的其他资源
       EXIT_ON_CLOSE 结束窗体所在应用程序  
   * add():将组件添加到帧中。
5、JDialog
(1)特性
     必须依赖一个JFrame对象
    常用构造方法: JDialog(JFrame f,String s);
    JDialog具有和JFrame一样的特性;
    JDialog分两种: 有模,无模;
(2)常用方法
     setSize(200,200);   //设置对话框窗口大小
   setLocation(300,300);   //设置对话框窗口位置
   setVisible(true);       //设置对话框窗口是否为可见
   setModal(false);        //设置对话框窗口模式
   setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE)
6、JPanel
   JPanel是JComponet的子类,因此JPanel是轻量级组件, 且JPanel可以容纳其它组件;我们称JPanel为中间容器;

(1)JPanel容器特性:
     需加入JFrame才可见
      默认可见;
     默认布局: FlowLayout;
     JPanel与JPanel可相互嵌套;
7、JScrollPane

产生滚动条
JTextArea txaDisplay = new JTextArea();
JScrollPane scroll = new JScrollPane(txaDisplay);

//分别设置水平和垂直滚动条自动出现
scroll.setHorizontalScrollBarPolicy(
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

//分别设置水平和垂直滚动条总是出现
scroll.setHorizontalScrollBarPolicy(
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

//分别设置水平和垂直滚动条总是隐藏scroll.setHorizontalScrollBarPolicy(
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_NEVER);




8、JSplitPane
Split Pane(分割面版)一次可将两个组件同时显示在两个显示区中,若你想要同时在多个显示区显示组件,你便必须同时使用多个Split Pane。JSplitPane提供两个常数让你设置到底是要水平分割还是垂直分割。这两个常数分别是:HORIZONTAL_SPIT,VERTICAL_SPLIT.
例子:
public class JSplitPane1{
public JSplitPane1(){
     JFrame f=new JFrame("JSplitPaneDemo");
     Container contentPane=f.getContentPane();
     JLabel label1=new JLabel("Label 1",JLabel.CENTER);                            
     label1.setBackground(Color.green);
     label1.setOpaque(true);//setOpaque(ture)方法的目的是让组件变成不透明,这样我们在JLabel上所设置的颜色显示出来。

     JLabel label2=new JLabel("Label 2",JLabel.CENTER);                            
     label2.setBackground(Color.pink);
     label2.setOpaque(true);                           

     JLabel label3=new JLabel("Label 3",JLabel.CENTER);                            
     label3.setBackground(Color.yellow);
     label3.setOpaque(true);     
     /*加入label1,label2到splitPane1中,并设置此splitPane1为水平分割且具有Continuous Layout的
      *功能。
      */
     JSplitPane splitPane1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,label1,label2);
     /*设置splitPane1的分隔线位置,0.3是相对于splitPane1的大小而定,因此这个值的范围在0.0~1.0
      *中。若你使用整数值来设置splitPane的分隔线位置,如第34行所示,则所定义的值以pixel为计算单位
      */
     	splitPane1.setDividerLocation(0.3);

	splitPane1.setResizeWeight(0.3);
     /*设置JSplitPane是否可以展开或收起(如同文件总管一般),设为true表示打开此功能。
      */
     splitPane1.setOneTouchExpandable(true);
     splitPane1.setDividerSize(10);//设置分隔线宽度的大小,以pixel为计算单位。
     
     JSplitPane splitPane2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,false,splitPane1,label3);
     splitPane2.setDividerLocation(35);
     //设置JSplitPane是否可以展开或收起(如同文件总管一般),设为true表示打开此功能.
     splitPane2.setOneTouchExpandable(false);
     splitPane2.setDividerSize(5);
     
     contentPane.add(splitPane2);
     
      f.setSize(250,200);
      f.show();
      f.addWindowListener(
           new WindowAdapter(){
               public void windowClosing(WindowEvent e){
                  System.exit(0);        
               }        
           }        
      );     
}        
public static void main(String[] args){
     new JSplitPane1();
}
}



9、JTabbedPane 面板切换工具、标题面板

10、基本控件
(1)JButton生成按钮;常用方法:
   public JButton(); public JButton(String tag);
   public void setText(String tag);
   public String getText();

(2)JTextField生成单行文本框;常用方法:
    public JTextField();public JTextField(int cols);
    public void setText(String tag);
    public String getText();

(3)JLabel生成标签;常用方法:
    public JLabel(); public JLabel(String tag);
    public void setText(String tag);
    public String getText();
(4)JPasswordField生成密码框;常用方法:
    public JPasswordField(); public JPasswordField (int cols);
    public void setText(String default);
    public char[ ] getPassword();
    public setEchoChar(char c)
(5)JTextArea生成多行文本框;常用方法:
    public JTextArea(); public JTextArea(int rows, int cols)
    public JTextArea(String text, int rows, int cols) ;
    public void setText(String str);
    public String getText();
    public void append(String str);

11、通用方法
  setIcon(Icon icon); //设置其上显示的图标.
  setBackground(Color c); //设置背景色.
  setForeground(Color c); //设置其上文字颜色.
  setFont(Font font); //设置字体.
  setPreferredSize(Dimension ds); //设置大小.
  setBorder(Border bd); //设置边框.
  setEnable(boolean b); //是否可用.
  setEditable(boolean b); //是否可编辑
相关类如下:
  Icon / ImageIcon //图标相关类
    Icon icon1=new ImageIcon(“图片路径”);
  Color //颜色相关类
    Color color1=new Color(255,0,0); //红色
  Font //字体相关类
    Font font1=new Font(“隶书”, Font.BOLD,16);
  Dimension //大小相关类
    Dimension dim1=new Dimension(宽,高);
  Border / BorderFactory //边框相关类
    createTitledBorder(String title); //有标题边框
    createBevelBorder(int type); //斜面边框
    createLineBorder(Color color); //颜色边框
    createEmptyBorder(int top, int left, int bottom, int right); //  空边框,用于产生边距
    createCompoundBorder(Border out, Border in); //组合边框,将两个边框效果组合
12、JOptionPane模式对话框
      ConfirmDialog --- 确认对话框,提出问题,然后由用户自己来确(按"Yes"或"No"按钮)

  InputDialog --- 提示输入文本

  MessageDialog --- 显示信息

  OptionDialog -- 组合其它三个对话框类型。
 这四个对话框可以采用showXXXDialog()来显示,如showConfirmDialog()显示确认对话框、showInputDialog()显示输入文本对话框、showMessageDialog()显示信息对话框、showOptionDialog()显示选择性的对话框。它们所使用的参数说明如下:

  ① ParentComponent:指示对话框的父窗口对象,一般为当前窗口。也可以为null即采用缺省的Frame作为父窗口,此时对话框将设置在屏幕的正中。

  ② message:指示要在对话框内显示的描述性的文字

  ③ String title:标题条文字串。

  ④ Component:在对话框内要显示的组件(如按钮)

  ⑤ Icon:在对话框内要显示的图标

  ⑥ messageType:一般可以为如下的值ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE、

  ⑦ optionType:它决定在对话框的底部所要显示的按钮选项。一般可以为DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION。

  使用实例:

  (1) 显示MessageDialog

  JOptionPane.showMessageDialog(null, "在对话框内显示的描述性的文字", "标题条文字串", JOptionPane.ERROR_MESSAGE);

  (2) 显示ConfirmDialog

  JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION);

  (3) 显示OptionDialog:该种对话框可以由用户自己来设置各个按钮的个数并返回用户点击各个按钮的序号(从0开始计数)
  Object[] options = {"确定","取消","帮助"};   int response=JOptionPane.showOptionDialog(this, "这是个选项对话框,用户可以选择自己的按钮的个数" , "选项对话框标题",JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);   if(response==0)   {   this.setTitle("您按下了第OK按钮 ");   }   else if(response==1)   {   this.setTitle("您按下了第Cancel按钮 ");   }   else if(response==2)   {   this.setTitle("您按下了第Help按钮 ");   }
  (4) 显示InputDialog 以便让用户进行输入

  String inputValue = JOptionPane.showInputDialog("Please input a value");

  (5) 显示InputDialog 以便让用户进行选择地输入
  Object[] possibleValues = { "First", "Second", "Third" }; //用户的选择项目   Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input",JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);   setTitle("您按下了"+(String)selectedValue+"项目");


二、布局管理器

---布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。
---布局管理器种类:

FlowLayout: 组件在一行中从左至右水平排列,排满后折行,它是Panel、Applet的默认布局管理器。

BorderLayout:北、南、东、西、中,它是Window、Frame、Dialog的默认布局管理器。

GridLayout:以行和列的网格形式安排组件

GridBagLayout:更复杂、功能更强的网格布局

CardLayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个确定容器布局

布局管理器

当一个窗口中的组件较多时,界面应该简洁整齐,布局合理。Java采用布局管理器对容器中的组件进行相对布局,当改变容器大小时,或者改变组件的大小,或者改变组件之间的相对位置,保证组件不会被覆盖并且容器没有空白区域。

Java提供多种风格和特点的布局管理器,每一种布局管理器指定一种组件之间的相对位置。Java.awt中的布局管理器类主要有:FlowLayout、BorderLayout和GridLayout。

布局是容器类的特性,每种容器都有一中默认布局。Window窗口类的默认布局管理器是BorderLayout,Panel面板类的默认布局是FlowLayout。如果一个容器需要改变其默认布局管理器,可以调用Container容器类的FlowLayout()方法。

1、  FlowLayout流布局管理器

FlowLayout布局管理器提供按行布置组件方式,将组件按从左到右顺序、一行一行地排列,当一行放满时再放置下一行。组件保持自己的尺寸,容器中一行的宽度随容器的宽度而变化。当改变容器大小时,组件的相对位置随容器大小而变化,将呈现一行或多行。

FlowLayout类的部分声明如下:

public class FlowLayout implements LayoutManager.jaca.io.Serializable{

       public static final int LEFT=0;                    //左对齐

       public static final int CENTER=1;                  // 居中

       public static final int RIGHT=2;                   //右对齐

       public FlowLayout()                                //构造方法,默认居中

       public FlowLayout(int align)                       //align参数指定对齐方式

       public FlowLayout(int align,int hgap,int vgap)     //hgap、vgap指定组件间的水平和垂直间距

}

2、  BorderLayout边界布局管理器

BorderLayout布局管理器将容器划分为五个区域,东、南、西、北四条边和中间,组件占满一条边或中间部分。当改变容器大小时,四边组件的长度或宽度不变,中间组件的长度和宽度随着容器大小而变化。

BorderLayout类的部分声明如下:

public class BorderLayout implements LayoutManager2,java.io.Serializable{

       public static final String NORTH="North";

       public static final String SOUTH="South";

       public static final String EAST="East";

       public static final String WEST="West";

       public static final String CENTER="Center";

       public BorderLayout()                           //构造方法,组件之间的间距为0像素

       public BorderLayout(int hgap,int vgap)          //参数指定组件之间的水平和垂直间距(像素)

}

Container类为BorderLayout布局提供以下添加组件的方法:

public void add(Component comp,Object constraints)

其中,constrains参数指定组件添加到BorderLayout布局容器的位置,取值为BordetLayout类的常量,如BorderLayout.EAST或“South”。例如,下列语句将5个按钮一次放置在框架的5个区域中:

Frame frame =new Frame();

frame.add(new Button("东"),BorderLayout.EAST);

frame.add(new Button("南"),"South");

frame.add(new Button("西"),"West");

frame.add(new Button("北"),"North");

frame.add(new Button("中"),BorderLayout.CENTER);    //可以省略为this.add(new Button("中"));

当constraints参数取值为BorderLayout.CENTER时,参数可以省略。如果将多个组件放置在同一个区域,则后放置组件将覆盖先放置的组件。

3、  GridLayout网格布局管理器

GridLayout布局管理器将容器划分为大小相等的若干行乘若干列的网格,组件从左至右,从上至下一次放入网格中。组件大小随容器大小而变化。如果组件数多于网格数,Java将自动增加网格;反之,一些网格将空置。

GridLayout类的部分声明如下:

public class GridLayout implements LayoutManager,java.io.Serializable{

       public GridLayout()

       public GridLayout(int rows,int cols)

       public GridLayout(int rows,int cols,int hgap,int vgap)

}

GridLayout布局的组件放置次序是行优先,从第一行开始,从左至右依次放置,一行放满后自动转入下一行。如果组件数超过网格数,则布局管理器会自动增加网格数,增加的原则是保持行数不变。如果需要在指定位置放置组件,则可调用Container类为GridLayout布局提供以下方法:

public Component add(Component comp,int index)

例如:

Frame frame=new Frame();

frame.setLayout(new GridLayout(3,2));        //设置3行2列的网格布局

frame.add(new Button("botton1"));            //依次添加组件

frame.add(new Button("botton2"),0);          //将组件插入在指定位置

4、BoxLayout盒式布局
用BoxLayout类可以创建一个布局对象,称为盒式布局。BoxLayout在javax.swing.border包中。javax.swing包提供了Box类,该类创建的容器称作一个盒子式容器,盒式容器的默认布局就是盒式布局,而且不允许更改盒式容器的布局,使用盒子式布局的容器针组件排列在一行或一列; 
常用方法:
       //创建一个从左到右显示其组件的 Box。
public  static Box createHorizontalBox()
//创建一个不可见的、固定宽度的组件。
public static Component createHorizontalStrut(int width)
//创建一个横向 glue 组件
public static Component createHorizontalGlue()
//创建一个从上到下显示其组件的 Box。
public static Box createVerticalBox()
//创建一个不可见的、固定高度的组件。
public static Component createVerticalStrut(int height)
//创建一个纵向 glue 组件。
public static Component createVerticalGlue()
//创建一个总是具有指定大小的不可见组件。
public static Component createRigidArea(Dimension d)

三、菜单相关类
JMenuBar //菜单条
JMenu //菜单
addSeparator(); //为菜单加分隔线
JMenuItem //菜单项
ButtonGroup/JRadioButtonMenuItem //单选框菜单

JFrame有setJMenuBar(JMenuBar mb)方法为窗体设置菜单.

   菜单(JMenu)和菜单项(JMenuItem)都扩展了AbstractButton类。菜单和菜单项包含与许多Swing按钮相同的特性。比如,菜单项可以在鼠标经过时,高亮显示;可以被单击,表明用户做出了选择;可以像按钮一样被禁止使用。

     复选菜单项(JCheckBoxMenuItem)与单选菜单项(JRadioButtonMenuItem)扩展了JMenuItem,其也具有与许多 Swing按钮相同的特性,如可以在选中与非选中状态之间进行切换。

     JMenu扩展了JMenuItem类,每个JMenu对象都包含一个用做菜单标题的隐藏菜单项。菜单不一定出现在菜单栏上,其可以被嵌入其他的菜单中充当子菜单。菜单栏包含一个或多个菜单,其使用与平台相关的位置摆放,通常位于窗口的上方。

     弹出式菜单(JPopupMenu)只有在用户执行了与平台相关的鼠标操作后才能出现。例如,在一个支持弹出式菜单的控件上用鼠标右键单击,在鼠标所在处将弹出快捷菜单。

例子:
public class DemoSimpleMenu extends JFrame{

 JMenuBar jMenuBarOne; 

 JMenu fileMenu,editMenu,newFileMenu;

 JMenuItem openFile,closeFile;//声明菜单

 JCheckBoxMenuItem newFileTxt,newFileJava;

 JRadioButtonMenuItem copyFile,pasteFile;

 ButtonGroup buttonEdit;

 public DemoSimpleMenu(){

    jMenuBarOne=new JMenuBar();

    buttonEdit=new ButtonGroup();

    /*

    *创建几个JMenu对象

    */

    fileMenu=new JMenu("文件");

    editMenu=new JMenu("编辑");

    newFileMenu =new JMenu("新建文件");

    openFile=new JMenuItem("打开文件");

    closeFile=new JMenuItem("关闭文件");

    /*

    *创建两个JCheckBoxMenuItem对象

    */

    newFileTxt=new JCheckBoxMenuItem("文本文件");

    newFileJava=new JCheckBoxMenuItem("Java文件");                  

    /*

    *创建两个JRadioButtonMenuItem对象

    */

    copyFile=new JRadioButtonMenuItem("复制"); 

    pasteFile=new JRadioButtonMenuItem("粘贴"); 

    buttonEdit.add(copyFile);

    buttonEdit.add(pasteFile);

    this.setJMenuBar(jMenuBarOne);  

    jMenuBarOne.add(fileMenu);

    jMenuBarOne.add(editMenu);

    /*

     *向fileMenu中添加JMenuItem对象

    */

    fileMenu.add(openFile);  

    fileMenu.add(closeFile);

    fileMenu.addSeparator();

    fileMenu.add(newFileMenu);

    newFileMenu.add(newFileTxt);

    newFileMenu.add(newFileJava);

    editMenu.add(copyFile);

    editMenu.add(pasteFile);

    /*

    *设置窗体的大小、位置、可见性以及按下关闭按钮时的默认动作

    */

    this.setTitle("菜单的简单使用");

    this.setBounds(100,100,250,150);

    this.setVisible(true);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

 }

 public static void main(String args[]){

  new DemoSimpleMenu();

 }

}



四、皮肤设置
设置快捷键
setMnemonic( KeyEvent.VK_A )

设置皮肤(自己扩展)
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
// com.sun.java.swing.plaf.motif.MotifLookAndFeel
//com.sun.java.swing.plaf.windows.WindowsLookAndFeel
// javax.swing.plaf.metal.MetalLookAndFeel
} catch (Exception e) {
e.printStackTrace();
}

五、事件处理
1、事件处理涉及的三大对象
Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。
Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮JButton。
Event handler-事件处理者,接收事件对象并对其进行处理的
2、监听器
监听器:ActionListener

方 法:actionPerformed

事 件:ActionEvent

● String getActionCommand()


actioncommand是控件内部的一个字符串,用于标识控件的状态。


此函数可以取得控件的状态,从而决定到底该做什么。


● int getModifiers()


取得“产生此事件时,用户同时按下的组合键”


● long getWhen()


取得“产生此事件时的时间戳”


事件产生原因:点击按钮,在列表框中选择内容,在文本框中点回车,计时器到期


------------------------------------------------------------------

监听器:AdjustmentListener

方 法:adjustmentValueChanged

事 件:AdjustmentEvent

● Adjustable getAdjustable()


adjustable是一个接口,各种滚动条都实现了这个接口。


● int getAdjustmentType()


取得滚动类型,共有UNIT_INCREMENT,UNIT_DECREMENT,BLOCK_INCREMENT,BLOCK_DECREMENT,TRACK共5种类型


● int getValue()


取得滚动滑块的当前值


事件产生原因:滚动条的滚动


------------------------------------------------------------------

监听器:ItemListener

方 法:itemStateChanged

事 件:ItemEvent

● Objedt getItem()


取得被选中的元素。注意,返回值是Object,还应该进行强制类型转换。


● ItemSelectable getItemSelectable()


ItemSelectable是一个接口,代表那些包含了n个可供选择的子元素的对象。此方法返回产生此事件的对象。此方法的作用主要在于,如果一个列表框是允许多选的,那么上面的方法就不好用了,应该用此方法得到列表对象,再取得被选中的多个元素。


● int getStateChange()


取得选择的状态,是SELECTED还是DESELECTED


事件产生原因:各种按钮的点击,列表框的选择


-----------------------------------------------------------------

监听器:FocusListener

方 法:focusGained、focusLost

事 件:FocusEvent

● Component getOppositeComponent()


得到“参与焦点变换的”另一个对象。如果是焦点取得事件,则返回之前拥有焦点的对象;如果是焦点失去事件,则返回得到焦点的对象。若焦点转移到另外一个应用程序,返回null


● boolean isTemporary()


焦点是临时性转移还是永久转移。临时性转移:用鼠标拖动窗口或者窗口变为非激活状态。其他为永久性转移。


事件产生原因:各种组件的焦点变化


------------------------------------------------------------------

监听器:KeyListener

方 法:keyPressed、keyReleased、keyTyped

事 件:KeyEvent

● char getKeyChar()


此方法只在keytyped中有效,返回按下的字符。比如按下shift+a,返回'A'


● int getKeyCode()


取得键盘上按键的整数编码。请注意,是键盘上的按键,比如F1,Ctrl,Home键等等,都有相应编码。不支持组合键,也就是说“Shift+a”和“a”返回同样的内容,都是小写a的ASCII码。但是大键盘的数字键和小键盘的数字键返回内容不同。


● static String getKeyModifiersText(int modifiers)


将掩码转化为字符串,比如“Ctrl”,“Ctrl+Shift”等。注意它是static方法


● static String getKeyText(int keyCode)


返回keyCode代表的按钮的名字,比如"Home","F1"等。注意它是statci方法


事件产生原因:在各种组件上敲击键盘


----------------------------------------------------------------

监听器:MouseListener

方 法:mouseClicked、mousePressed、mouseReleased

mouseEntered、mouseExited

事 件:MouseEvent

● Point getLocationOnScreen()


返回鼠标相对于显示屏幕的绝对坐标(java 1.6版提供)


● int getXOnScreen()


返回鼠标相对于显示屏幕的X的绝对坐标(java 1.6版提供)

● int getYOnScreen()


返回鼠标相对于显示屏幕的Y的绝对坐标(java 1.6版提供)

● Point getPoint()


返回鼠标相对于组件的绝对坐标


● int getX()


返回鼠标相对于组件的X的绝对坐标

● int getY()


返回鼠标相对于组件的Y的绝对坐标

● void translatePoint(int x, int y)


给鼠标的做用点加上一个偏移量。比如2个参数分别是10, 20,你要用鼠标画直线,当你鼠标指向100,100开始画,实际上的线是画在110,120处


● int getClickCount()


产生此事件时鼠标共点击了多少下(单击、双击、三击……)

● int getButton()


产生此事件时,鼠标的哪个键被点击了:NOBUTTON, BUTTON1, BUTTON2 或者 BUTTON3


● boolean isPopupTrigger()


是否能够触发一个弹出式菜单。由于各平台触发弹出式菜单的情况不一样,因此应该在mousePressed 和 mouseReleased中都检测一下


事件产生原因:在任何组件上点击鼠标、将光标移动进来或出去


---------------------------------------------------------------------

监听器:MouseMotionListener

方 法:mouseDragged、mouseMoved

事 件:MouseEvent


同上!

事件产生原因:在任何组件上移动鼠标


---------------------------------------------------------------------

监听器:MouseWheelListener

方 法:mouseWheelMoved

事 件:MouseWheelEvent

● int getScrollType()


滚动的类型,是按块滚动WHEEL_BLOCK_SCROLL还是按单位滚动WHEEL_UNIT_SCROLL


● int getScrollAmount()


返回为相应此事件应该滚动的单位数。此方法有效的前提是按单位滚动。


● int getWheelRotation()


鼠标滚轮滚动过程中”咔嚓“声的数目。向上滚为负值,向下滚为正值


事件产生原因:在任何组件上滚动鼠标中键


--------------------------------------------------------------------

监听器:WindowListener

方 法:windowOpened、windowClosing、windowClosed、windowIconified

windowDeiconified、windowActivated、windowDeactivated

事 件:WindowEvent

● Window getWindow()


返回发生此事件的window对象


● Window getOppositeWindow()


若发生了焦点转移,返回另一个参与此事件的window对象,或者null


● int getOldState()


窗口变化前的状态:NORMAL、ICONIFIED、MAXIMIZED_BOTH


● int getNewState()


窗口变化后的状态

事件产生原因:窗口发生变化


----------------------------------------------------------------------

监听器:WindowFocusListener

方 法:windowGainedFocus、windowLostFocus

事 件:WindowEvent

同上!

事件产生原因:窗口得到或失去焦点


------------------------------------------------------------------------

监听器:WindowStateListener

方 法:WindowStateChanged

事 件:WindowEvent

同上!

事件产生原因:窗口状态改变

3、定时任务组件
javax.swing.Timer //在指定延迟之后激发一个或多个操作事件,实现定时功能。
void start()  //启动该 Timer。
void stop()  //停止该 Timer
java.util.Timer //配合TimerTask使用,实现定时功能。
schedule(TimerTask task, Date time)  //安排在指定的时间执行指定的任务。
schedule(TimerTask task, long delay)  //安排在指定延迟后执行指定的任务
分享到:
评论
1 楼 zyp307 2014-09-05  
楼主威武。

相关推荐

    90个java-swing基础例子.zip

    在这个"90个java-swing基础例子.zip"压缩包中,你将找到90个不同的示例,涵盖了Swing的基础用法,这对于学习和理解Swing的各种功能非常有帮助。 1. **Swing组件**:Swing 提供了许多组件,如按钮(JButton),文本框...

    java swing漂亮界面(超酷) javaswing教程

    文档"javaswing教程.doc"应该包含了详细的步骤、实例代码以及最佳实践,帮助你深入理解和掌握Java Swing的界面设计技巧。 总之,Java Swing不仅是一个强大的工具集,也是开发者实现桌面应用创新设计的关键。通过这...

    java swing漂亮界面 超酷 javaswing教程

    在“Java Swing漂亮界面 超酷 JavaSwing教程”中,我们主要会探讨如何利用Swing来设计美观且用户友好的界面。Swing组件的一大优点是它们是轻量级的,这意味着它们完全由Java代码实现,而不是依赖于操作系统提供的...

    java swing基础教程

    本教程将深入讲解Java Swing的基础知识,帮助开发者掌握这一强大的工具。 1. **Swing组件基础** Swing提供了一系列组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)等,这些组件构成了用户界面的...

    Java Swing练习中的基础代码

    这些源码实例涵盖了Swing的基础,包括组件的使用、事件处理、布局管理、以及可能的网络和数据处理。学习这些代码可以帮助开发者了解如何创建基本的Java桌面应用,并逐步熟悉Swing的各种特性和功能。对于想要提升Java...

    Java Swing入门基础.

    4. **事件处理**:Swing 提供了更高级的事件处理模型,使得编程更加简洁。 对于初学者来说,学习 Swing 是一个很好的提升阶段,因为它可以帮助理解 Java 如何创建交互式的图形界面。以下是一个简单的 Swing 程序...

    java+swing漂亮软件界面+超酷+以及javaswing教程.7z

    "javaswing教程"这部分内容可能包括了对Swing组件的详细讲解,如何使用它们,如何进行事件处理(如按钮点击事件),以及如何实现组件间的数据交互。此外,可能还包括了如何添加动画效果,使界面更生动,符合“超酷”...

    javaswing教程 精通javaswing

    它是所有组件的父类,提供了绘制的基础架构、键盘事件处理、add() 方法等功能。 简单的 Swing 小部件 JLabel 是 Swing 库中最基础的组件。它所做的正是您所期望的:呆在那儿,看起来很漂亮,描述其他组件。它可以...

    JAVA swing中文离线API文档

    本离线API文档详细阐述了Swing库中的各种组件、事件处理机制以及布局管理器等核心概念,对Java桌面开发人员来说是一份非常重要的参考资料。 在Java Swing中,开发者可以创建窗口、菜单、按钮、文本输入框等常见的...

    java swing串口通信源码

    使用这样的源码,开发者可以快速理解和学习Java Swing中的串口通信,或者直接将其集成到自己的项目中,作为基础模块。 总的来说,Java Swing串口通信是将Java桌面应用与外部硬件设备集成的关键技术。理解其工作原理...

    java swing 多功能 聊天室

    Java Swing中的事件监听机制是关键,它允许程序对用户的操作做出响应。例如,当用户点击“发送”按钮时,一个ActionListener会被触发,处理发送消息的逻辑。对于文件/文件夹的发送,可能需要实现Drag and Drop功能,...

    东北大学 基础实训设计 javaswing图形化界面 云工厂

    Swing还支持事件处理,使得用户与界面的交互变得简单。 在“云工厂”项目中,Java Swing将被用来构建东软智能制造云平台系统的用户界面。这个平台可能包含多个模块,如订单管理、生产调度、设备监控等。每个模块都...

    javaswing课程设计——课程表

    在这个“javaswing课程设计——课程表”项目中,学生或初学者将学习如何利用Swing来开发一个功能齐全的课程表应用。 首先,我们需要了解Java Swing的基本使用。Swing是基于事件驱动模型的,也就是说,用户在界面上...

    java(swing)+ mysql实现学生信息管理系统

    * 了解 Java Swing 事件处理机制,如 ActionListener、ActionEvent 等。 * 了解如何使用 Java Swing 事件处理机制来实现按钮点击事件、表格单元格点击事件等。 六、Java Swing 布局管理 * 了解 Java Swing 布局...

    《Java Swing图形界面开发与案例详解》源代码_java_baseballkn8_

    《Java Swing图形界面开发与案例详解》是一本深入讲解Java GUI编程的书籍,源代码提供了丰富的实例,适合Java初学者入门学习。Swing是Java AWT(Abstract Window Toolkit)库的扩展,它提供了更为丰富的组件和更现代...

    javaswing图书馆管理系统源代码+数据库模型

    javaswing图书馆管理系统源代码+数据库模型 确保系统具有良好的系统性能,友好的用户界面。 较高的处理效率,便于使用和维护。 采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。 系统尽可能...

    Java Swing 简单的员工管理系统

    Java Swing 是Java GUI(图形用户界面)开发的一个重要框架,它是Java Foundation Classes (JFC) 的一部分,提供了丰富的组件和事件处理机制,用于构建桌面应用。在这个“Java Swing 简单的员工管理系统”中,开发者...

    java swing 增删改查

    3. **事件处理**:Swing中的事件处理通常涉及到监听器(Listeners)。例如,ActionListener用于监听按钮点击事件,当用户点击按钮时,执行相应的回调方法。 4. **模型-视图-控制器(MVC)模式**:在增删改查的场景...

    Java swing 基础

    JComponent是Swing中所有组件的基类,它扩展了Container类,提供了一些通用的方法,如事件处理和绘图能力。许多Swing组件直接或间接地继承自JComponent,如JButton和JLabel。 在使用Swing构建GUI时,有一些基本规则...

    五子棋JavaSwing开发

    【五子棋JavaSwing开发】是一个适合初学者的项目,它涵盖了客户端应用程序的开发以及数据库的使用。在这个项目中,我们将深入学习如何利用Java Swing库来构建图形用户界面(GUI),同时理解数据库与Java程序之间的...

Global site tag (gtag.js) - Google Analytics